speedin-santa/Scripts/WindSound.gd
2024-12-31 23:31:28 -05:00

39 lines
1.1 KiB
GDScript

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()