mtd/motion_test.gd

38 lines
936 B
GDScript

extends Sprite2D
#var head_bob_amplitude := 100.0
@export var head_bob_amplitude: float = 50.0
#var head_bob_amplitude := 1.0
@export var head_bob_frequency: float = 0.015
#var head_bob_frequency := 0.030
func _process(delta: float) -> void:
check_motion(delta)
func check_motion(delta: float) -> void:
if Input.is_action_pressed("Primary Fire"):
play_motion(foot_step_motion(), delta)
else:
reset_position(delta)
func reset_position(delta: float) -> void:
if position != Vector2.ZERO:
position = lerp(position, Vector2.ZERO, 10.0 * delta)
func foot_step_motion() -> Vector2:
var pos: Vector2 = Vector2.ZERO
var t: float = Time.get_ticks_msec() * head_bob_frequency
pos.y += sin(t) * head_bob_amplitude
pos.x += cos(t / 2.0) * head_bob_amplitude * 2.0
return pos
func play_motion(motion: Vector2, delta: float) -> void:
position = lerp(position, motion, 10.0 * delta)
#position = motion
#position += motion