How to pause object

I have script attached to New Level object so when I shoot it, it plays short music and loads next level.

I would like for the same script while in pause to allow music to finish playing and before loading new level to also disable all the turrets and player to shoot and move.

MY SCRIPT

static var advance = false;

var player : Transform;

function OnTriggerEnter( hit : Collider ){

if(hit.gameObject.tag == “CannonBall”)
{
Destroy(hit.gameObject);
}

if(hit.gameObject.tag == “Projectile”)
{

	 advance = true;
	 
	 audio.Play();
	 
	 Destroy(hit.gameObject);

	 yield WaitForSeconds(1.8);

	Application.LoadLevel(2);
				
  }

}

Use for to loop any turret to disable.

var turrets : GameObject[];

static var advance = false;
var player : Transform;

function Start ()
{
	turrets = GameObject.FindGameObjectsWithTag("turret"); //<-- Find any gameObjects with tag "turret".
}

function OnTriggerEnter ( hit : Collider )
{
    if(hit.gameObject.tag == "CannonBall")
    {
        Destroy(hit.gameObject);
    }

    if(hit.gameObject.tag == "Projectile")
    {
        advance = true;
        for (var i = 0; i < turrets.Length; i++)
        {
        	turrets*.active = false;*

}
audio.Play();
Destroy(hit.gameObject);
yield WaitForSeconds(1.8);
Application.LoadLevel(2);
}
}

I appreciate your effort to help me but it still doesn’t work for me.

Everything is still moving and shooting.

All I am trying to achieve is after I shoot NewLevel object to frieze everything just to let my short music finish playing before loading new level.