4 @export var dash_length := 10.0
6 @onready var timer: Timer = $Timer
9 var new_position: Vector3
12 func should_enter(input: InputPacket) -> String:
14 input.player_actions.sort_custom(moves_priority_sort)
15 return input.player_actions[0]
19 func update(input: InputPacket, delta: float):
21 player.global_position = lerp(
22 player.global_position,
24 (player.dash_length / timer.wait_time) * delta
27 new_position = player.global_position + Vector3(
28 input.player_movement_direction.x, 0, input.player_movement_direction.y
30 rotate_skin(new_position)
33 func on_enter_state():
34 new_position = Vector3.ZERO
39 func _on_timer_timeout() -> void:
43 func rotate_skin(towards: Vector3):
44 var skin_target_angle := Vector3.BACK.signed_angle_to(
45 towards - player.global_position,
48 player.skin.global_rotation.y = skin_target_angle