]> Untitled Git - frog-ninja.git/blobdiff - player/moves/walk.gd
Cleaned up animation associations with states
[frog-ninja.git] / player / moves / walk.gd
index cf031aa65adc86d6dc8dbf486c603a561d03453f..8f57d980d07ac1eed74c944787d70d681f88a895 100644 (file)
@@ -6,9 +6,16 @@ const skin_lean_limit := PI/4
 
 
 func update(input: InputPacket, delta: float):
-       player.velocity = get_new_velocity_from_input(input, delta)
+       player.velocity = get_new_velocity_from_input(input, delta, player.walk_speed)
        player.move_and_slide()
-       
+       update_skin(delta)
+
+
+func on_enter_state():
+       player.skin.transition_move()
+
+
+func update_skin(delta: float):
        # update skin rotation
        var skin_target_angle := Vector3.BACK.signed_angle_to(
                player.last_movement_direction, 
@@ -31,11 +38,11 @@ func update(input: InputPacket, delta: float):
                        ),
                player.rotation_speed * delta * 0.25
                )
+               
+       player.skin.set_walking_speed(player.velocity.length())
 
 
-
-
-func get_new_velocity_from_input(input: InputPacket, delta: float) -> Vector3:
+func get_new_velocity_from_input(input: InputPacket, delta: float, speed: float) -> Vector3:
        # Get the XZ input direction based on player's input relative to the camera
        var forward := camera.global_basis.z
        var right := camera.global_basis.x
@@ -52,7 +59,7 @@ func get_new_velocity_from_input(input: InputPacket, delta: float) -> Vector3:
        player.floor_normal = player.get_floor_normal()
        player.ground_slope_input = (PI / 2) - player.velocity.angle_to(player.floor_normal)
        var new_velocity = player.velocity.move_toward(
-               movement_direction * (player.walk_speed + player.ground_slope_input * player.walk_speed),
+               movement_direction * (speed + player.ground_slope_input * speed),
                player.acceleration * delta
                )