How can i get this to run after collision?

I would like a box collider to trigger this script and have the script run even if the box collider is not touching any more?

#pragma strict
//Attach to empty object, in front of barrel
var projectile : Rigidbody;
var speed = 20;
var fireRate = .5;
var mySound : AudioClip;

function OnCollisionEnter(collision : Collision) {
    InvokeRepeating("Fire",0.5,0.3);
}

function Fire()
{
    audio.PlayOneShot(mySound);

    var instantiatedProjectile : Rigidbody = Instantiate( projectile, transform.position, transform.rotation );
    instantiatedProjectile.velocity = transform.TransformDirection( Vector3( speed, 0, 0 ) );

    Physics.IgnoreCollision( instantiatedProjectile. collider, transform.root.collider );
    CancelInvoke();
}

Except for the CancelInvoke() which make the repeating useless, this should work. Of course, the collision needs two colliders with isTrigger false and a physical movement.