I have two audio sources:
- Audio source 1: Plays the background
music. - Audio source 2: Plays some
guiding speech OnTriggerEnter on a
game object.
I want to lower source 1’s volume just before source 2 plays and then return the volume back to normal when source 2 is done playing. Lowering the sound is easy but getting it to return back to normal at the right time is a problem. Here is what I’ve tried
Player.js:
var one_bg_sound : AudioSource;
var two_guide_sound : AudioSource;
function OnTriggerEnter (other : Collider) {
// Lower background sound on collision
one_bg_sound.volume = 0.25;
// Play 4 seconds long clip
two_guide_sound.Play();
// After 4 seconds return the background sound to normal
Camera.ResetBgAudioInSeconds( one_bg_sound, 4 );
}
Camera.js:
static function ResetBgAudioInSeconds( audioSource: AudioSource, secs: int ) {
Debug.Log( "Reset music volumn in seconds:" + secs );
yield WaitForSeconds ( secs );
Debug.Log( "Music volume reset" );
audioSource.volume = 1;
}
The problem is:
The ResetBgAudioInSeconds doesn’t execute unless I remove the “yield” line. What am I doing wrong?