I checked nearly every answer for this, but those were mostly simple errors and mistakes. My problem is that OnCollisionEnter is not called even when colliding whith other r
You just need attach script to the same object, whose need detects the collision.
because you misstyped class name of parameter. this makes no error also not works. eg:
OnCollisionEnter(Collider other) //this is wrong
OnCollisionEnter(Collision other) //this is correct
Try this
http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnCollisionEnter.html
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour {
void OnCollisionEnter(Collision collision) {
foreach (ContactPoint contact in collision.contacts) {
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
if (collision.relativeVelocity.magnitude > 2){
audio.Play();
}
}
}
You need to make sure that the collision matrix (Edit->Project Settings->Physics) does not exclude collisions between the layers that your objects belong to.
Unity Docs
You also need to make sure that the other object has : collider, rigidbody and that the object itself or either of these components are not disabled.
Here is what I do:
Now your OnCollisionEnter works. I hope this helps you.
Are you using 2D colliders and rigidbodies? If so use this function instead of OnCollisionEnter
void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.gameObject.tag);
}