(一)测试前准备工作
1.创建两个游戏对象,分别取名为”Player”和”Enemy”,并且为名为”Player”的游戏对象设置Tag也为”Player”,二者在场景中如图1所示:
2.编写脚本组件”TriggerTest”,并挂载到Enemy上,代码如图2所示:
(二)测试用例
A3、A4、B1、B2与(一)中预设冲突,故舍弃。
A5-A8以及B5-B8是一定不可能发生碰撞的用例,故舍弃。
游戏对象 | 用例序号 | 是否挂载碰撞器 | 是否挂载刚体 | 是否挂载TriggerTest |
Player | A1 | √ | × | × |
A2 | √ | √ | × | |
A3 | √ | √ | √ | |
A4 | √ | × | √ | |
A5 | × | × | × | |
A6 | × | √ | × | |
A7 | × | √ | √ | |
A8 | × | × | √ | |
Enemy | B1 | √ | × | × |
B2 | √ | √ | × | |
B3 | √ | √ | √ | |
B4 | √ | × | √ | |
B5 | × | × | × | |
B6 | × | √ | × | |
B7 | × | √ | √ | |
B8 | × | × | √ |
测试用例组合 | 控制台输出 |
A1、B3 | 输出Trigger |
A1、B4 | 无 |
A2、B3 | 输出Trigger |
A2、B4 | 输出Trigger |
(三)测试总结
根据表1和表2可知,有效碰撞的必要条件如下:
(1)两个游戏对象都需要挂载至少一个碰撞器组件;
(2)两个游戏对象至少有一个挂载刚体组件;
(3)至少有一个刚体组件的BodyType不为Static。
(四)碰撞检测相关的API
(1)OnCollisionEnter()和OnCollisionEnter2D();
(2)OnCollisionStay()和OnCollisionStay2D();
(3)OnCollisionExit()和OnCollisionExit2D();
(4)OnTriggerEnter()和OnTriggerEnter2D();
(5)OnTriggerStay()和OnTriggerStay2D();
(6)OnTriggerExit()和OnTriggerExit2D();
具体看官方关于Monobehaviour类的说明。
如果这篇文章对你有帮助,请给作者点个赞吧!