📜  oncollisionenter unity - C# (1)

📅  最后修改于: 2023-12-03 14:44:53.241000             🧑  作者: Mango

OnCollisionEnter Unity - C#

在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只会在发生碰撞时调用,如果需要实时检测碰撞,可以使用OnCollisionStayOnCollisionExit
  • OnCollisionEnter只会在有碰撞体的游戏对象之间才会被调用。
  • 通常情况下,碰撞检测需要在游戏对象的Rigidbody上勾选Is KinematicUse Gravity,否则可能会出现碰撞无效的情况。
  • OnCollisionEnter可以在脚本中直接调用,用于模拟碰撞效果。
参考链接