The cloned rigidbody´s OnCollisionEnter is never called

Every time a fire my weapon a rigidbody is cloned and fired away.
When it hits an enemy, the enemies OnCollisionEnter(Collision collider) is called, but not the bullet´s OnCollisionEnter(Collision collider).
Both the bullet and the enemy, of course, have attached rigidbodies and colliders. None is set to “is kinematic.”

Why is not the bullet´s function called?

The Bullet code is simple:

public class Shoot : MonoBehaviour {

	public Rigidbody bullet;
	public float speed = 50;
	void Update () {
		if (Input.GetButtonDown ("Fire1")) {
			Rigidbody clone = (Rigidbody)Instantiate(bullet, transform.position, transform.rotation);
			clone.velocity = transform.TransformDirection(new Vector3(0, 0, speed));

			Destroy(clone.gameObject, 5);

	void OnCollisionEnter(Collision collider) {
		Debug.Log ("Bullet collided!");

It looks like you defined an OnCollisionEnter callback in the “Shoot” script but this script is not attached to the object that is actually colliding. To have the bullet detect collisions you need to attach a script to the bullet prefab.

The object that contains your Shoot script represents basically a weapon which shoots bullets. At the moment you only check if your weapon object collides with somesthing but not the bullets it instantiates.

The code you posted is for shooting the bullet (From a gun, I assume). You need to attach a separate script to your bullet prefab and put the OnCollisionEnter function on that script instead.