From 6173a0c4e1b41628532a37f0638339b0724b445e Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Fri, 28 Nov 2025 18:42:41 +0200 Subject: Use state machine in Player --- ps_curve.gd | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 ps_curve.gd (limited to 'ps_curve.gd') diff --git a/ps_curve.gd b/ps_curve.gd new file mode 100644 index 0000000..bf903bd --- /dev/null +++ b/ps_curve.gd @@ -0,0 +1,37 @@ +class_name PlayerStateCurve +extends PlayerState + +var t: float = 0 +var target: Curve2D +var speed: float +var dir: int + +func initialize(_p: Player, c_target: Curve2D, c_speed: float, c_reverse: bool): + target = c_target + speed = c_speed + if c_reverse: + dir = -1 + t = 1 + else: + dir = 1 + t = 0 + +func _handle(_p: Player, _delta: float): + pass + +func _handle_physics(p: Player, delta: float): + t += dir * speed * delta + var finished: bool + if dir == 1: + finished = t >= 1.0 + else: + finished = t <= 0.0 + + var new_position = target.sample_baked(t * target.get_baked_length(), true) + p.velocity = (new_position - p.position) / delta + + if finished: + p.set_movement_normal() + return + + p.position = new_position -- cgit v1.3