关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter
关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter
整理关于OnTriggerEnter
和OnCollisionEnter
的触发条件
对于三个带有collider
组件的gameObject
A,B,C:
当对象A未勾选Is Trigger
,分别去碰撞B(B的collider
组件不勾选Is Trigger
)和C(C的collider
组件勾选Is Trigger
)时:
- A, B,C均不带有
rigidbody
组件,运动状态未发生变化,OnCollisionEnter
和OnTriggerEnter
均不会触发。 - A带有
rigidbody
组件,B,C均不带有rigidbody
组件的情况下:-
A与B接触时,A受到碰撞发生旋转,B未发生变化。A和B脚本内
OnCollisionEnter
均触发,OnTriggerEnter
均不会触发 -
A与C接触时,A和C运动状态未发生变化。A和C脚本内
OnCollisionEnter
均未触发,OnTriggerEnter
均触发
-
- A,B,C均带有
rigidbody
组件- A与B接触时,A和B受到碰撞发生旋转。A和B脚本内
OnCollisionEnter
均触发,OnTriggerEnter
均不会触发 - A与C接触时,A和C运动状态未发生变化。A和C脚本内
OnCollisionEnter
均未触发,OnTriggerEnter
均触发
- A与B接触时,A和B受到碰撞发生旋转。A和B脚本内
当A勾选Is Trigger
,去碰撞C(C的collider
组件勾选Is Trigger
)时
- A, C均不带有
rigidbody
组件。接触时,运动状态未发生变化,OnCollisionEnter
和OnTriggerEnter
均不会触发。 - A与C至少带有一个
rigidbody
组件。接触时,A和C运动状态未发生变化。A和C脚本内OnCollisionEnter
均未触发,OnTriggerEnter
均触发
两个collider
产生碰撞的条件:至少有一collider
带有rigidbody
组件
若两个collider
可以产生碰撞且均未勾选Is Trigger
,触发OnCollisionEnter
。否则触发OnTriggerEnter
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律