Untitled
unknown
plain_text
9 months ago
1.8 kB
5
Indexable
extends Area3D
@export var audio_player: AudioStreamPlayer3D
@export var transition_time: float = 0.5 # Time for smooth transition
var target_volume_db := 0.0
var current_volume_db := 0.0
var target_lowpass_cutoff := 20000 # Max frequency (no muffling)
var current_lowpass_cutoff := 20000
var lowpass_filter: AudioEffectLowPassFilter
func _ready():
# Assign the player to the "MuffledBus"
audio_player.bus = "MuffledBus"
# Create a dedicated filter for this audio instance
lowpass_filter = AudioEffectLowPassFilter.new()
lowpass_filter.cutoff_hz = current_lowpass_cutoff
# Connect signals properly
connect("body_entered", _on_body_entered)
connect("body_exited", _on_body_exited)
func _process(delta):
# Smooth transitions only for this audio player
current_volume_db = lerp(current_volume_db, target_volume_db, delta / transition_time)
current_lowpass_cutoff = lerp(current_lowpass_cutoff, target_lowpass_cutoff, delta / transition_time)
# Apply smooth effect specifically to this player
audio_player.volume_db = current_volume_db
# Access the playback and apply the filter directly
var playback := audio_player.get_stream_playback()
if playback and playback is AudioStreamPlaybackResampled:
playback.set_mix_target(AudioStreamPlayer3D.MIX_TARGET_STEREO)
playback.set_filter_enabled(0, true)
playback.set_filter_cutoff(0, current_lowpass_cutoff)
func _on_body_entered(body):
if body.is_in_group("Player"):
target_volume_db = -20
target_lowpass_cutoff = 1000
func _on_body_exited(body):
if body.is_in_group("Player"):
target_volume_db = 0
target_lowpass_cutoff = 20000
Editor is loading...
Leave a Comment