Skip to content

Instantly share code, notes, and snippets.

@Shilo
Created March 30, 2024 23:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shilo/4489e033e65b03156d866287d798e8c6 to your computer and use it in GitHub Desktop.
Save Shilo/4489e033e65b03156d866287d798e8c6 to your computer and use it in GitHub Desktop.
Godot 4 modular sway component to bounce the y position of a parent, up and down.
class_name SwayComponent extends Node
@export var sway_distance: float = 32
@export var sway_duration: float = 2
@onready var start_y: float = y
var y: float:
set(value):
var parent := get_parent()
if !parent:
return
parent.set_indexed("position:y", value)
get:
var parent := get_parent()
if !parent:
return 0
var value = parent.get_indexed("position:y")
if value == null:
value = 0
return value
func _process(_delta: float) -> void:
y = start_y + sin(TAU * Time.get_ticks_msec() / 1000.0 / sway_duration) * sway_distance
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment