Destroy(gameObject); is just duplicating objects

Hey guys, I know there are multiple threads about “Destroy(gameObject);” and I have read them all I assure you.

My issue is that the object that should be getting destroy upon collision isn’t being destroyed rather just thousands of clones are spawning and jittering at the collision point.

The lazer I have is attatched to the player as a prefab, it duplicates perfectly and everything, it just doesn’t delete on contact.

I also have a object set tagged as “Top” so when the lazer(gameObject) strikes the object tagged as top, it should delete? I am not 100% sure what I did wrong, I made sure that they were in-fact colliding.

Any help would be amazing.

Below is the js code I am using for my lazer:

#pragma strict

var speed : int = 5;


function Start () {

}

function Update () {
	transform.Translate(Vector3(0,speed * Time.deltaTime,0));
}

function onCollisionEnter(col : Collision){
	if(col.gameObject.tag == "Top"){
		Destroy(gameObject);
	}
}

OnCollisionEnter() begins with a capital “O”. Is that is? You won’t get an error for using a lowercase “O” the unity engine just won’t send collision messages to it.