OnCollisionEnter destruction doesn't trigger

Hi, I’m working on a game where the player can drop a bomb which counts down till it explodes and destroys the block directly below. The code below is placed on the bridge and is supposed to count till three (in sync with the bomb) before destroying itself. But it doesn’t, I tried changing it to use tags but that didn’t work. Additionally, the bomb has a capsule collider that is slightly over extended; IsTrigger isn’t ticked; it has rigidbody with both gravity on. The bridges have rigidbody with no gravity; and a slightly extended box collider with no trigger.

using UnityEngine;
using System.Collections;

public class DestroyDirtBridge : MonoBehaviour {
	private float counter=0;
	void OnCollisionEnter(Collision collision){
	if(collision.gameObject.name == "Bridge")
		{
		Debug.Log("hit");
		InvokeRepeating("counting", 0, 1);
			if(counter>3)
			{
				Destroy(gameObject);
			}
		}
	
		
	}
	void counting(){
	counter=counter+1;	
	}
	
}

OnCollisionEnter() only gets called once, when the colliders first touch. You probably want something like:

public class DestroyDirtBridge : MonoBehaviour {

    void OnCollisionEnter(Collision collision) {
        if (collision.gameObject.name == "Bridge") {
            Debug.Log("hit");
            StartCoroutine(Countdown());
        }
    }

    IEnumerator Countdown() {
        for (int countdown = 3; countdown > 0; countdown--) {
            yield return new WaitForSeconds(1);
        }
        Destroy(gameobject);
    }

}

(Warning: untested code.)

Or, if you wanted a message roughly every frame that the colliders are in contact, use OnColliderStay(). Also, BTW, if you destroy an object (versus moving it out of contact), you won’t get an OnCollisionExit() message.