Improve handling analog movement

pull/16/head
Joseph DiGiovanni 2023-12-17 00:27:05 +07:00
parent 91a2c4a89f
commit a5f8ceb985
1 changed files with 17 additions and 7 deletions

@ -34,7 +34,7 @@ func _physics_process(delta):
handle_controls(delta) handle_controls(delta)
handle_gravity(delta) handle_gravity(delta)
handle_effects() handle_effects(delta)
# Movement # Movement
@ -72,16 +72,23 @@ func _physics_process(delta):
# Handle animation(s) # Handle animation(s)
func handle_effects(): func handle_effects(delta):
particles_trail.emitting = false particles_trail.emitting = false
sound_footsteps.stream_paused = true sound_footsteps.stream_paused = true
if is_on_floor(): if is_on_floor():
if abs(velocity.x) > 1 or abs(velocity.z) > 1: var horizontal_velocity = Vector2(velocity.x, velocity.z)
animation.play("walk", 0.5) var speed_factor = horizontal_velocity.length() / movement_speed / delta
particles_trail.emitting = true
sound_footsteps.stream_paused = false if speed_factor > 0.05:
animation.play("walk", 0.5, speed_factor)
if speed_factor > 0.3:
sound_footsteps.stream_paused = false
sound_footsteps.pitch_scale = speed_factor
if speed_factor > 0.75:
particles_trail.emitting = true
else: else:
animation.play("idle", 0.5) animation.play("idle", 0.5)
else: else:
@ -98,8 +105,11 @@ func handle_controls(delta):
input.x = Input.get_axis("move_left", "move_right") input.x = Input.get_axis("move_left", "move_right")
input.z = Input.get_axis("move_forward", "move_back") input.z = Input.get_axis("move_forward", "move_back")
input = input.rotated(Vector3.UP, view.rotation.y).normalized() input = input.rotated(Vector3.UP, view.rotation.y)
if input.length() > 1:
input = input.normalized()
movement_velocity = input * movement_speed * delta movement_velocity = input * movement_speed * delta
# Jumping # Jumping