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 rigidbody 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();
}
}
Another example:
var explosionPrefab :
Transform;
function OnCollisionEnter(collision :
Collision) {
var contact = collision.contacts[0];
var rot =
Quaternion.FromToRotation(
Vector3.up, contact.normal);
var pos = contact.point;
Instantiate(explosionPrefab, pos, rot);
Destroy (gameObject);
}