//当这个collider/rigidbody已经开始接触另一个rigidbody/collider时,OnCollisionEnter被调用。
//相对于OnTriggerEnter,OnCollisionEnter传递Collision类而不是Collider。Collision类包含接触点,碰撞速度等细节。如果在函数中不使用collisionInfo,省略collisionInfo参数以避免不必要的计算。请注意如果一个碰撞器附加了一个非动力刚体,也只发送碰撞事件。
function OnCollisionEnter(collision : Collision) {
// Debug-draw all contact points and normals
//调试绘制所有的接触点和法线
for (var contact : ContactPoint in collision.contacts) {
Debug.DrawRay(contact.point, contact.normal, Color.white);
}
// Play a sound if the coliding objects had a big impact.
//如果碰撞物体有一个较大的冲撞,播放一个声音
if (collision.relativeVelocity.magnitude > 2)
audio.Play();
}
// 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
//旋转这个物体使y轴面向沿着表面法线的方向
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);
}
Rigidbody.OnCollisionEnter 碰撞速度检测
最新推荐文章于 2020-07-27 10:06:39 发布