欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#碰撞(Collision)与触发(Trigger)检测

程序员文章站 2024-03-16 18:37:34
...
碰撞检测:主动方(运动的一方)必须有Rigidbody,发生碰撞的两个游戏对象必须有Collider,被动方对于RigidBody可有可无

void OnCollisionEnter(Collision col)    {        Debug.Log("开始碰撞" + col.collider.gameObject.name);    }    
void OnCollisionStay(Collision col)    {        Debug.Log("持续碰撞中" + col.collider.gameObject.name);    }    
void OnCollisionExit(Collision col)    {        Debug.Log("碰撞结束" + col.collider.gameObject.name);    }
**需要注意的是,方法的参数 Collision col,包含了被撞物体的碰撞信息。
常用的是:col.tag : 被碰撞物体的标签。col.gameobject:被碰撞物体的游戏对象。col.rigidbody获取被碰撞物体的刚体信息。

触发检测:发生碰撞的物体两者其中之一有Rigidbody即可,发生碰撞的两个游戏对象必须有Collider,其中一方勾选IsTrigger即可,参数是表示被动方
void OnTriggerEnter(Collider other)    {        Debug.Log("触发器开始出发:" + other.gameObject.name);    }    
void OnTriggerStay(Collider other)    {        Debug.Log("触发器检测中:" + other.gameObject.name);    }    
void OnTriggerExit(Collider other)    {        Debug.Log("触发器结束:" + other.gameObject.name);    }


isKinematic 属性是确定刚体是否接受动力学模拟(是否受物理的作用),此影响不仅包括重力感应,还包括速度、阻力、质量等的物理模拟