Unity3d 关于碰撞事件触发,触发器事件触发和 RigidBody以及IsKinematic RigidBody,Collider以及IsTrigger Collider 的条件总结

时间:2021-07-11 05:03:59
本人刚开始对碰撞事件和触发器事件的触发条件搞不清楚,经过网上查找了几篇博文和自己的手动测试,总结如下,只要记住这些核心规则和原因,在任何情况下应该都可以明白,会不会触发,避免新手走弯路,网上的博文和表格可以看一下,但是那个没有总结规律,只是表象,意义不大
Unity3d 关于碰撞事件触发,触发器事件触发和 RigidBody以及IsKinematic RigidBody,Collider以及IsTrigger Collider 的条件总结如下

1.碰撞是和力相关的,所以必须有钢体携带的力数据才能进行力的计算,同时只有两方都有碰撞器的数据如物理材质等才能计算碰撞的结果反向作用力等,这三个条件缺一不可,当钢体开启 IsKinematic时,钢体不在参与物理引擎的力计算,所以没有力自然不能计算出碰撞结果。
2.触发器不同,触发器只要接触即触发,只需要碰撞器接触并不计算碰撞结果数据,如碰撞力度,反作用力等,但是触发需要一个触发主体就是钢体,但是钢体的力计算和触发没有关系,所以无论开关IsKinematic 都不影响。
我个人认为其实触发器作为碰撞器的子功能来实现,是一种偷懒行为,其实大多数情况下我们的游戏都只需要触发,而不是计算碰撞的物理结果,那些结果又耗性能对物理表现要求不高的游戏也意义不大,所以还是多用触发器和射线吧