Reputation: 359
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 rigidbody.
here is the part what does not get called:
void OnCollisionEnter(UnityEngine.Collision col) {
Debug.Log("collision!!!");
foreach(ContactPoint contact in col.contacts) {
//checking the individual collisions
if(contact.Equals(this.target))
{
if(!attacking) {
Debug.Log("hitting target");
} else {
Debug.Log("dying");
//engage death sequence
}
}
}
}
Not even the "collision!!!" message appears. Do I understand the usage wrong, or did I forget something?
Upvotes: 15
Views: 31893
Reputation: 2383
Are you using 2D colliders and rigidbodies? If so use this function instead of OnCollisionEnter
void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.gameObject.tag);
}
Upvotes: 55
Reputation: 19
You just need attach script to the same object, whose need detects the collision.
Upvotes: 0
Reputation: 2798
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
Upvotes: 0
Reputation: 11
Here is what I do:
Now your OnCollisionEnter works. I hope this helps you.
Upvotes: 1
Reputation: 21
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();
}
}
}
Upvotes: 2
Reputation: 1109
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.
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.
Upvotes: 3