温馨提示:本文基于前一篇“Unity的碰撞检测(三)”继续探讨两个游戏对象具备刚体的触发检测,阅读本文则默认已阅读前文。
(一)测试说明
在基于两个游戏对象都具备触发器和刚体且属性一致的条件下,若二者刚体的BodyType有所不同是否会出现不同的测试结果。
本次测试我们约定如此:Player与Enemy都具备触发器和刚体,默认属性如图1和图2所示:
(二)测试用例
游戏对象 | 测试用例序号 | Static | Kinematic | Dynamic |
Player | A1 | √ | × | × |
A2 | × | √ | × | |
A3 | × | × | √ | |
Enemy | B1 | √ | × | × |
B2 | × | √ | × | |
B3 | × | × | √ |
组合序号 | 测试用例组合 | 控制台输出 |
G1 | A1、B1 | 无 |
G2 | A1、B2 | Trigger输出 |
G3 | A1、B3 | Trigger输出 |
G4 | A2、B1 | Trigger输出 |
G5 | A2、B2 | Trigger输出 |
G6 | A2、B3 | Trigger输出 |
G7 | A3、B1 | Trigger输出 |
G8 | A3、B2 | Trigger输出 |
G9 | A3、B3 | Trigger输出 |
(三)测试总结
分析1:由G1可知,当Player和Enemy的刚体的BodyType均为Static时,不会产生有效触发。
分析2:由G2和G3可知,当Player的刚体的BodyType为Static时,Enemy的刚体的BodyType为Kinematic或Dynamic都会产生有效触发。
分析3:由G4-G6可知,当Player的刚体的BodyType为Kinematic时,无论Enemy的刚体的BodyType为什么都会产生有效触发。
分析4:由G7-G9可知,当Player的刚体的BodyType为Dynamic时,无论Enemy的刚体的BodyType为什么都会产生有效触发。
根据上述分析可得以下结论:
结论1:两个游戏对象发生有效触发的必要条件之一是至少有一个游戏对象的刚体的BodyType为Kinematic或Dynamic。
(四)问题
本文的测试进一步验证了”Unity的碰撞检测(二)”中的结论3,至此关于有效碰撞和有效触发的必要条件的探索告一段落。但是对于Unity的碰撞检测而言这仅仅是一个开始,对于刚体的BodyType为Dynamic时,它的Collision Detection属性会对碰撞检测产生什么影响呢?我们在下一篇“Unity的碰撞检测(五)”继续探讨吧。
如果这篇文章对你有帮助,请给作者点个赞吧!