public ContactPoint[] contacts ;

Description

The contact points generated by the physics engine. You should avoid using this as it produces memory garbage. Use GetContact or GetContacts instead.

每个接触均包含一个接触点、法线和碰撞的两个碰撞体(请参阅 ContactPoint)。 从内部 OnCollisionStayOnCollisionEnter,能够 始终确保 contacts 至少有一个元素。

using UnityEngine;

public class ExampleScript : MonoBehaviour { void OnCollisionStay(Collision collision) { foreach (ContactPoint contact in collision.contacts) { print(contact.thisCollider.name + " hit " + contact.otherCollider.name); // Visualize the contact point Debug.DrawRay(contact.point, contact.normal, Color.white); } } }
// A grenade
// - instantiates an explosion Prefab when hitting a surface
// - then destroys itself

using UnityEngine; using System.Collections;

public class ExampleClass : 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); Destroy(gameObject); } }