extends AudioStreamPlayer3D
@export var min_interval: float = 2.5
@export var max_interval: float = 3.5
@export var fade_out_duration: float = 1.0 # Duración del fade-out en segundos.
@export var fade_in_duration: float = 0.5 # Duración del fade-in en segundos.
var timer: float = 0.0
var is_playing: bool = false
var fade_timer: float = 0.0
var initial_volume: float = 0.0
func _ready():
timer = randf_range(min_interval, max_interval)
initial_volume = volume_db
func _process(delta):
timer -= delta
fade_timer -= delta
if timer <= 0.0:
if is_playing:
# Inicia el fade-out.
fade_timer = fade_out_duration
else:
# Inicia el fade-in.
fade_timer = fade_in_duration
play()
is_playing = !is_playing
timer = randf_range(min_interval, max_interval)
# Efecto de fade-out/fade-in.
if fade_timer > 0.0:
if is_playing:
# Fade-in.
volume_db = lerp(-80.0, initial_volume, 1.0 - (fade_timer / fade_in_duration))
else:
# Fade-out.
volume_db = lerp(initial_volume, -80.0, 1.0 - (fade_timer / fade_out_duration))
elif is_playing:
volume_db = initial_volume #aseguramos que el volumen este al original cuando termina el fade in.