class_name WindSound extends Node @onready var fastPlayer: AudioStreamPlayer = $Fast @onready var slowPlayer: AudioStreamPlayer = $Slow @export var slowSound: AudioStream @export var fastSound: AudioStream @export var fullFast: float = 250 @export var fullSlow: float = 100 func _ready() -> void: fastPlayer.stream = fastSound slowPlayer.stream = slowSound fastPlayer.play() slowPlayer.play() # Called every frame. 'delta' is the elapsed time since the previous frame. func _physics_process(delta: float) -> void: if (City.moving && is_instance_valid(Sleigh.instance)): if (Sleigh.instance.speed < fullSlow): fastPlayer.volume_db = -80 slowPlayer.volume_db = 0 elif (Sleigh.instance.speed > fullFast): fastPlayer.volume_db = 0 slowPlayer.volume_db = -80 else: var ratio: float = lerpf(0, 1, (Sleigh.instance.speed - fullSlow) / (fullFast - fullSlow)) fastPlayer.volume_db = linear_to_db(ratio) slowPlayer.volume_db = linear_to_db(1 - ratio) else: fastPlayer.volume_db = -80 slowPlayer.volume_db = -10 func _on_slow_finished() -> void: slowPlayer.play() func _on_fast_finished() -> void: fastPlayer.play()