]> Untitled Git - frog-ninja.git/blobdiff - player/moves/walk.gd
Separated the Visual from the Model
[frog-ninja.git] / player / moves / walk.gd
index cf031aa65adc86d6dc8dbf486c603a561d03453f..60f6f5bdbde372b37c9d86c86b8c6c7e80675360 100644 (file)
@@ -2,13 +2,18 @@ extends Move
 class_name Walk
 
 
 class_name Walk
 
 
-const skin_lean_limit := PI/4
+const skin_lean_limit := PI/8
+
+@export var movement_speed := 10.0
 
 
 func update(input: InputPacket, delta: float):
 
 
 func update(input: InputPacket, delta: float):
-       player.velocity = get_new_velocity_from_input(input, delta)
+       player.velocity = get_new_velocity_from_input(input, delta, movement_speed)
        player.move_and_slide()
        player.move_and_slide()
-       
+       update_skin(delta)
+
+
+func update_skin(delta: float):
        # update skin rotation
        var skin_target_angle := Vector3.BACK.signed_angle_to(
                player.last_movement_direction, 
        # update skin rotation
        var skin_target_angle := Vector3.BACK.signed_angle_to(
                player.last_movement_direction, 
@@ -33,15 +38,8 @@ func update(input: InputPacket, delta: float):
                )
 
 
                )
 
 
-
-
-func get_new_velocity_from_input(input: InputPacket, delta: 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
-       var movement_direction := (
-               forward * input.movement_direction.y + right * input.movement_direction.x
-               ).normalized()
+func get_new_velocity_from_input(input: InputPacket, delta: float, speed: float) -> Vector3:
+       var movement_direction := input.camera_movement_direction
        movement_direction.y = 0
 
        # save off last movement direction 
        movement_direction.y = 0
 
        # save off last movement direction 
@@ -52,7 +50,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(
        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
                )
        
                player.acceleration * delta
                )