54 lines
1.2 KiB
GDScript
54 lines
1.2 KiB
GDScript
extends Node
|
|
|
|
onready var util = get_node("/root/Util")
|
|
var played_jump_sound = false
|
|
|
|
func _ready():
|
|
"$Footsteps/Timer.time_left = -1.0"
|
|
|
|
func jump():
|
|
var on_floor = $"../OnFootPhysics/Floor".is_on_floor
|
|
var jump_intent = $"../MovementInput".jump_intent
|
|
var velocity = $"../OnFootPhysics".velocity
|
|
|
|
if jump_intent and not on_floor and not played_jump_sound:
|
|
$Jump.play()
|
|
played_jump_sound = true
|
|
elif on_floor and played_jump_sound:
|
|
$Jump.stop()
|
|
$JumpLanding.play()
|
|
played_jump_sound = false
|
|
if not on_floor and velocity.z < -10 and not $FallingSound.playing:
|
|
$FallingSound.play()
|
|
$FallingSound.pitch_scale = rand_range(0.5, 1.2)
|
|
elif on_floor:
|
|
$FallingSound.stop()
|
|
|
|
|
|
func footsteps():
|
|
var on_floor = $"../OnFootPhysics/Floor".is_on_floor
|
|
var velocity = $"../MovementInput".input_xz
|
|
|
|
print($Footsteps/Timer.time_left)
|
|
|
|
if not on_floor or velocity.length() == 0 or not $"..".is_on_foot():
|
|
$Footsteps.stop()
|
|
return
|
|
if $Footsteps/Timer.time_left > 0.0:
|
|
return
|
|
|
|
$Footsteps.pitch_scale = rand_range(0.9, 1.1)
|
|
$Footsteps.play()
|
|
|
|
var is_sprinting = $"../MovementInput".sprinting
|
|
|
|
if is_sprinting:
|
|
$Footsteps/Timer.start(0.3)
|
|
else:
|
|
$Footsteps/Timer.start(0.5)
|
|
|
|
|
|
func _process(_delta):
|
|
jump()
|
|
footsteps()
|