function OnCollisionEnter (collisionInfo : Collision) : void
Description
OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider.
In contrast to OnTriggerEnter, OnCollisionEnter is passed the Collision class and not a Collider.
The Collision class contains information about contact points, impact velocity etc.
If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations.
Note that collision events are only sent if one of the colliders also has a non-kinematic rigid body attached.
function OnCollisionEnter(collision :
Collision) {
for (
var contact :
ContactPoint in collision.contacts)
Debug.DrawRay(contact.point, contact.normal,
Color.white);
if (collision.relativeVelocity.magnitude > 2)
audio.Play();
}
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();
}
}
import UnityEngine
import System.Collections
class example(MonoBehaviour):
def
OnCollisionEnter(collision as
Collision):
for contact as
ContactPoint in collision.contacts:
Debug.DrawRay(contact.point, contact.normal,
Color.white)
if collision.relativeVelocity.magnitude > 2:
audio.Play()
OnCollisionEnter can be a co-routine, simply use the yield statement in the function.