首先刚体碰撞的基本条件是:双方都有碰撞体且至少一方有刚体的情况
在满足该条件下我进行了一系列的实验,如下:
一方有刚体:
双方碰撞器trigger都没有勾选:
刚体为Dynamic可以,双方碰撞事件函数均可以执行
刚体为Kinematic不可以,双方碰撞事件函数都不执行
刚体为Static不可以,双方碰撞事件函数都不执行
刚体方trigger勾选:
刚体为Dynamic可以,双方碰撞事件函数都执行,且都为触发碰撞
刚体为Kinematic可以,双方碰撞事件函数都执行,且都为触发碰撞
刚体为Static不可以,双方碰撞事件函数都不执行
非刚体方trigger勾选:
同上
双方trigger都勾选:
同上
双方都有刚体:
双方trigger都没有勾选:
一方为Dynamic,另一方刚体无论是什么类型,双方碰撞事件函数都可以执行
一方为Kinematic,另一方为Kinematic或者Static时碰撞事件函数都不执行
一方为Static,另一方为Static时碰撞事件函数都不执行
一方勾选:
一方为Dynamic,另一方刚体无论什么类型,双方碰撞事件函数都可以执行,且都为触发碰撞
一方为Kinematic,另一方为Kinematic或者Static时碰撞事件都可以执行,且都为触发碰撞
双方都为Static时碰撞事件函数都不执行
双方都勾选:
同上
结论:
Dynamic可以与任意刚体类型的刚体发生触发和非触发碰撞,也可以与无刚体的物体发生触发和非触发碰撞
Static可以与Dynamic发生触发和非触发碰撞,只能与Kinematic发生触发碰撞,其余均不发生碰撞
Kinematic可以与Dynamic发生触发和非触发碰撞,只能与Kinematic和Static发生触发碰撞,只能与无刚体的物体发生触发碰撞