28 lines
648 B
GDScript3
28 lines
648 B
GDScript3
|
class_name AudioComponent
|
||
|
extends Node
|
||
|
|
||
|
@export var movement: MovementComponent
|
||
|
@export var footsteps: Array[AudioStream]
|
||
|
@export var interval: float = 0.3
|
||
|
|
||
|
var audio_player: AudioStreamPlayer3D
|
||
|
var last_footstep: float
|
||
|
|
||
|
func _ready():
|
||
|
audio_player = $Footsteps
|
||
|
|
||
|
func _process(_delta):
|
||
|
if Time.get_unix_time_from_system() - last_footstep < interval:
|
||
|
return
|
||
|
|
||
|
if movement.direction == Vector3.ZERO:
|
||
|
return
|
||
|
|
||
|
if !movement.body.is_on_floor():
|
||
|
return
|
||
|
|
||
|
audio_player.stream = footsteps[randi_range(0, footsteps.size()-1)]
|
||
|
audio_player.pitch_scale = randf_range(0.9, 1.1)
|
||
|
audio_player.play()
|
||
|
last_footstep = Time.get_unix_time_from_system()
|