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