X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/blobdiff_plain/2e697142bf5e1b94429281572bdc1cbf5868d5ce..refs/heads/state-machine:/player/moves/dash.gd diff --git a/player/moves/dash.gd b/player/moves/dash.gd index cfdfa77..7bac154 100644 --- a/player/moves/dash.gd +++ b/player/moves/dash.gd @@ -11,24 +11,38 @@ var new_position: Vector3 func should_enter(input: InputPacket) -> String: if finished: - input.actions.sort_custom(moves_priority_sort) - return input.actions[0] + 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(): - new_position = player.global_position + player.last_movement_direction * dash_length + new_position = Vector3.ZERO 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