Collision 碰撞
描述碰撞
碰撞信息被传递给Collider.OnCollisionEnter, Collider.OnCollisionStay和Collider.OnCollisionExit这些事件。
变量 | 说明 |
---|---|
collider | 被碰撞的那个碰撞器(只读)。 |
contacts | 物理引擎生成的碰撞点集。 |
gameObject | 被碰撞的碰撞器所在的游戏对象(只读)。 |
impulse | 应用在接触解决的碰撞的总的推动力。 |
relativeVelocity | 两个碰撞的对象之间的相对线性速度(只读)。 |
rigidbody | 被碰撞的刚体组件(只读)。当这个对象碰撞到一个没有被附加刚体组件的碰撞器时返回null。 |
transform | 我们碰撞的对象的变换(只读)。 |
示例:
Collision.contacts 接触点
物理引擎生成的碰撞点集。
using UnityEngine;
using System.Collections;
public class ExampleClass : 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);
}
}
}
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);
}
}
ContactPoint 接触点
描述碰撞发生位置的一个接触点。
碰撞点被存储在碰撞对象中。参见:Collision
变量 | 说明 |
---|---|
normal | 接触点的法向量。 |
otherCollider | 其他相关联的碰撞器。 |
point | 接触的点。 |
thisCollider | 第一个相关联的碰撞器。 |
🔚