📅  最后修改于: 2023-12-03 14:44:53.241000             🧑  作者: Mango
在Unity中,OnCollisionEnter
是用于检测碰撞的函数。当游戏对象发生碰撞时,会自动调用OnCollisionEnter
函数,并传递一个参数Collision
,其中包含了发生碰撞的具体信息,如碰撞点、碰撞对象等。
void OnCollisionEnter(Collision collision) {
// 碰撞后执行的代码
}
public class Example : MonoBehaviour {
void OnCollisionEnter(Collision collision) {
Debug.Log("Collision Detected!");
}
}
在这个示例中,当游戏对象被其它游戏对象碰撞时,会输出"Collision Detected!"。
OnCollisionEnter
只有一个参数,类型为Collision
,表示发生碰撞的具体信息。
void OnCollisionEnter(Collision collision) {
// 碰撞对象的名称
string colliderName = collision.collider.name;
// 碰撞对象的标签
string colliderTag = collision.collider.tag;
// 碰撞点
Vector3 collisionPoint = collision.contacts[0].point;
// 碰撞法线
Vector3 collisionNormal = collision.contacts[0].normal;
// 碰撞力
float collisionForce = collision.relativeVelocity.magnitude;
}
OnCollisionEnter
只会在发生碰撞时调用,如果需要实时检测碰撞,可以使用OnCollisionStay
或OnCollisionExit
。OnCollisionEnter
只会在有碰撞体的游戏对象之间才会被调用。Rigidbody
上勾选Is Kinematic
或Use Gravity
,否则可能会出现碰撞无效的情况。OnCollisionEnter
可以在脚本中直接调用,用于模拟碰撞效果。