老规矩,先介绍一下 Unity 的科普小知识:
碰撞/触发 必要条件:
ProjectSettings
中的物理系统碰撞必须要有交集。
两者有交集,才可使用触发器检测到对方。
Unity中一般都是默认全部都有交集,若是在项目过程中改变了,那么后续使用时一定要注意这个地方!
发生碰撞的必要条件:
碰撞器 Collider
刚体 RigRigidbody
【设在运动的一方是因为:经常性地不运动后,刚体会休眠,这时无法发生碰撞检测】发生触发检测必要条件:
必要条件与碰撞检测一致,但是必须要在Collider
中勾选 Is Trigger
才可以使用触发器的回调(OnTriggerEnter/OnTriggerStay/OnTriggerExit)
有一种方法可以在双方都只有触发器但是没有刚体的情况下检测到对方
那就是Physics
中的API 碰撞盒检测 Physics.OverlapBox
、OverlapCapsule
、OverlapSphere
这种方法可以使我们在双方身上都不需要添加刚体就可以拿到检测到的回调,从而做一些处理。
因为添加了刚体会产生一些额外的我们不想要的物理效果,所以想要在不添加刚体的情况下拿到检测的对象,那就可以尝试使用Physics 碰撞盒检测 来达到目的。
使用方法在之前的文章中讲过,可以参考一下: 【100个 Unity踩坑小知识点】| Unity中的 碰撞盒检测 Physics.OverlapBox、OverlapCapsule、OverlapSphere