0%

Unity入门常见错误之碰撞检测方法无法触发

无法触发:OnTriggerEnter、OnTriggerStay、OnCollisionEnter方法

需考虑:

OnCollisionEnter:

需要双方都有Collider或者Rigibody,如果双方都有Rigibody,那么需要勾选isKinematic。

OnTriggerEnter:

需要双方至少有一个Rigibody,可以勾选isKinematic,双方最少有一方勾选上Collider组件上的isTrigger。

OnTriggerStay:

运行了一段时间后OnTriggerStay不再被调用,则需要考虑是否被检测物体的刚体的睡眠模式是否设置为了Never Sleep。

测试OnTriggerEnter和OnCollisionEnter的区别

测试:

如果两个物体A,B

两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等)

A,B都有刚体(Rigidbody)

A或者B中有一个勾选isTrigger或者两者都勾选isTrigger A和B都可以进入OnTriggerEnter方法,但是不可进入OnCollisionEnter方法。

A和B都不勾选isTrigger,A和B能进入OnCollisionEnter方法但是不能进入OnTriggerEnter方法。

结论:

OnCollisionEnter方法必须是在两个碰撞物体都不勾选isTrigger的前提下才能进入,反之只要勾选一个isTrigger那么就能进入OnTriggerEnter方法。

OnCollisionEnter和OnTriggerEnter是冲突的不能同时存在的。

OnTriggerEnter和OnCollisionEnter的选择。

如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。

如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

转载地址

https://blog.csdn.net/baidu_41935968/article/details/102847324