X-Git-Url: http://git.purplebirdman.com/frog-ninja.git/blobdiff_plain/3701448ba7e2410adf79dd4a326c0d47a9cc8240..refs/heads/state-machine:/player/moves/walk.gd diff --git a/player/moves/walk.gd b/player/moves/walk.gd index cf031aa..dd707bb 100644 --- a/player/moves/walk.gd +++ b/player/moves/walk.gd @@ -2,13 +2,18 @@ extends Move 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): - player.velocity = get_new_velocity_from_input(input, delta) + player.velocity = get_new_velocity_from_input(input, delta, movement_speed) 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, @@ -33,16 +38,12 @@ 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() - movement_direction.y = 0 +func get_new_velocity_from_input(input: InputPacket, delta: float, speed: float) -> Vector3: + var movement_direction := Vector3( + input.player_movement_direction.x, + 0, + input.player_movement_direction.y + ) # save off last movement direction if movement_direction.length() > 0.2: @@ -52,7 +53,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 )