Fade In/Out Audio After Enter Trigger

Using Unity Pro

Hey, so I search up on google for this solution and I got this script.

var track1 : AudioClip;
var track2 : AudioClip;

function Start()
{
	audio.clip = track1;
	audio.Play();
}

var audio1Volume : float = 1.0;
var audio2Volume : float = 0.0;
var track2Playing : boolean = false;

function OnTriggerStay() 
{ //replacing with "function Update" works and the audio clips are fading in and out, when starting the game
	fadeOut();
	if (audio1Volume <= 0.1) 
	{
		if(track2Playing == false)
		{
			track2Playing = true;
			audio.clip = track2;
			audio.Play();
		}
		fadeIn();
	}
}

function OnGUI() 
{ 
	GUI.Label(new Rect(10, 10, 200, 100), "Audio 1 : " + audio1Volume.ToString());
	GUI.Label(new Rect(10, 30, 200, 100), "Audio 2 : " + audio2Volume.ToString());
}

function fadeIn() 
{
	if (audio2Volume < 1) 
	{
		audio2Volume += 0.1 * Time.deltaTime;
		audio.volume = audio2Volume;
	}
}

function fadeOut() 
{
	if(audio1Volume > 0.1)
	{
		audio1Volume -= 0.1 * Time.deltaTime;
		audio.volume = audio1Volume;
	}
}

Fading is actually work but when you stay on trigger only. How to make fading it after I enter the trigger?

P.S I bought SoundManagerPro about 2 weeks ago and I wanted to do like this but I don’t know how. If you guys know, please tell me :3

I found a way to fade out the sound which works fine but it’s not the best way probably. Here is the code:

function OnTriggerEnter ()
{
audio.volume = 0.9;

//Waiting time before fade the audio
yield WaitForSeconds(1.3);
audio.Stop();
}

function Update ()
{
	if (audio.volume < 1)
	{
	//Fade the audio
        audio.volume -= 0.03; 
	}

}

private var alreadyCalled : boolean = false
public var speed:float = 1.0f;

function OnTriggerEnter(col:Collider)
{
   // Make sure you do not start many coroutine
   if(! alreadyCalled){
      // Get your audio source and pass it
      FadeOutSound(audio);
      alreadyCalled = true;
   }
}

function FadeOutSound( audio:AudioSource)
{
   while(audio.volume>0){
      audio.volume -= Time.deltaTime * speed;
      yield;
   }
   // You probably want to remove the object (or not) once the sound is gone
   Destroy(gameObject); 
}

If you want the audio to begin fading continuously when you enter the trigger, create a flag or a state to update the audio once it has been trigged inside the Update function. This way once it knows the flag has been triggered it will always update.

bool fadeAudio = false;

function OnTriggerStay() 
{ 
fadeAudio = true;
}

void Update()
{
if(fadeAudio)
{
// Fade audio here
}
}