Collision 碰撞

描述碰撞

碰撞信息被传递给Collider.OnCollisionEnter, Collider.OnCollisionStay和Collider.OnCollisionExit这些事件。

变量说明
collider被碰撞的那个碰撞器(只读)。
contacts物理引擎生成的碰撞点集。
gameObject被碰撞的碰撞器所在的游戏对象(只读)。
impulse应用在接触解决的碰撞的总的推动力。
relativeVelocity两个碰撞的对象之间的相对线性速度(只读)。
rigidbody被碰撞的刚体组件(只读)。当这个对象碰撞到一个没有被附加刚体组件的碰撞器时返回null。
transform我们碰撞的对象的变换(只读)。

示例:

Collision.contacts 接触点

物理引擎生成的碰撞点集。

  1. using UnityEngine;
  2. using System.Collections;
  3. public class ExampleClass : MonoBehaviour {
  4. void OnCollisionStay(Collision collision) {
  5. foreach (ContactPoint contact in collision.contacts) {
  6. print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
  7. Debug.DrawRay(contact.point, contact.normal, Color.white);
  8. }
  9. }
  10. }
  1. using UnityEngine;
  2. using System.Collections;
  3. public class ExampleClass : MonoBehaviour {
  4. public Transform explosionPrefab;
  5. void OnCollisionEnter(Collision collision) {
  6. ContactPoint contact = collision.contacts[0];
  7. Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
  8. Vector3 pos = contact.point;
  9. Instantiate(explosionPrefab, pos, rot);
  10. Destroy(gameObject);
  11. }
  12. }

ContactPoint 接触点

描述碰撞发生位置的一个接触点。

碰撞点被存储在碰撞对象中。参见:Collision

变量说明
normal接触点的法向量。
otherCollider其他相关联的碰撞器。
point接触的点。
thisCollider第一个相关联的碰撞器。

?