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 属性是确定刚体是否接受动力学模拟(是否受物理的作用),此影响不仅包括重力感应,还包括速度、阻力、质量等的物理模拟
上一篇: 对称加密与非对称加密