]> Untitled Git - frog-ninja.git/blobdiff - player/moves/dash.gd
Moved camera vector stuff into CameraHandler
[frog-ninja.git] / player / moves / dash.gd
index aaf7081b1837fcfe383dbdc2dbb0eb377fa4b80f..7bac154e8f149ac81917fd48d2cb9172ef4979a5 100644 (file)
@@ -1,6 +1,7 @@
 extends Move
 class_name Dash
 
 extends Move
 class_name Dash
 
+@export var dash_length := 10.0
 
 @onready var timer: Timer = $Timer
 
 
 @onready var timer: Timer = $Timer
 
@@ -10,25 +11,38 @@ var new_position: Vector3
 
 func should_enter(input: InputPacket) -> String:
        if finished:
 
 func should_enter(input: InputPacket) -> String:
        if finished:
-               input.actions.sort_custom(moves_priority_sort)
-               return input.actions[0]
-       return "dash"
+               input.player_actions.sort_custom(moves_priority_sort)
+               return input.player_actions[0]
+       return state_name
 
 
 
 
-func update(_input: InputPacket, delta: float):
-       player.global_position = lerp(
-               player.global_position,
-               new_position,
-               (player.dash_length / timer.wait_time) * delta
-       )
+func update(input: InputPacket, delta: float):
+       if new_position:
+               player.global_position = lerp(
+                       player.global_position,
+                       new_position,
+                       (player.dash_length / timer.wait_time) * delta
+                       )
+       else:
+               new_position = player.global_position + Vector3(
+                       input.player_movement_direction.x, 0, input.player_movement_direction.y
+                       ) * dash_length
+               rotate_skin(new_position)
 
 
 func on_enter_state():
 
 
 func on_enter_state():
-       player.skin.transition_dash()
-       new_position = player.global_position + player.last_movement_direction * player.dash_length
+       new_position = Vector3.ZERO
        finished = false
        timer.start()
 
 
 func _on_timer_timeout() -> void:
        finished = true
        finished = false
        timer.start()
 
 
 func _on_timer_timeout() -> void:
        finished = true
+
+
+func rotate_skin(towards: Vector3):
+       var skin_target_angle := Vector3.BACK.signed_angle_to(
+               towards - player.global_position, 
+               Vector3.UP
+               )
+       player.skin.global_rotation.y = skin_target_angle