Collision.contacts

var contacts : ContactPoint[]

Description

The contact points generated by the physics engine.

Every contact contains a contact point, normal and the two colliders that collided (see ContactPoint). From inside OnCollisionStay or OnCollisionEnter you can always be sure that contacts has at least one element.

JavaScript
function OnCollisionStay(collision : Collision) {
// Check if the collider we hit has a rigidbody
// Then apply the force
for (var contact : ContactPoint in collision.contacts) {
print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
// Visualize the contact point
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
void OnCollisionStay(Collision collision) {
foreach (ContactPoint contact in collision.contacts) {
print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

def OnCollisionStay(collision as Collision):
for contact as ContactPoint in collision.contacts:
print(((contact.thisCollider.name + ' hit ') + contact.otherCollider.name))
Debug.DrawRay(contact.point, contact.normal, Color.white)

JavaScript
// A grenade
// - instantiates a explosion prefab when hitting a surface
// - then destroys itself

var explosionPrefab : Transform;

function OnCollisionEnter(collision : Collision) {
// Rotate the object so that the y-axis faces along the normal of the surface
var contact = collision.contacts[0];
var rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
var pos = contact.point;
Instantiate(explosionPrefab, pos, rot);
// Destroy the projectile
Destroy (gameObject);
}

using UnityEngine;
using System.Collections;

public class example : MonoBehaviour {
public Transform explosionPrefab;
void OnCollisionEnter(Collision collision) {
ContactPoint contact = collision.contacts[0];
Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
Vector3 pos = contact.point;
Instantiate(explosionPrefab, pos, rot) as Transform;
Destroy(gameObject);
}
}

import UnityEngine
import System.Collections

class example(MonoBehaviour):

public explosionPrefab as Transform

def OnCollisionEnter(collision as Collision):
contact as ContactPoint = collision.contacts[0]
rot as Quaternion = Quaternion.FromToRotation(Vector3.up, contact.normal)
pos as Vector3 = contact.point
(Instantiate(explosionPrefab, pos, rot) as Transform)
Destroy(gameObject)