Unity的碰撞检测

(一)测试前准备工作

        1.创建两个游戏对象,分别取名为”Player”和”Enemy”,并且为名为”Player”的游戏对象设置Tag也为”Player”,二者在场景中如图1所示:

图1 绿为Enemy,红为Player

        2.编写脚本组件”TriggerTest”,并挂载到Enemy上,代码如图2所示:

图2 TriggerTest脚本

(二)测试用例

        A3、A4、B1、B2与(一)中预设冲突,故舍弃。

       A5-A8以及B5-B8是一定不可能发生碰撞的用例,故舍弃。

表1 测试用例

游戏对象

用例序号

是否挂载碰撞器

是否挂载刚体

是否挂载TriggerTest

Player

A1

×

×

A2

×

A3

A4

×

A5

×

×

×

A6

×

×

A7

×

A8

×

×

Enemy

B1

×

×

B2

×

B3

B4

×

B5

×

×

×

B6

×

×

B7

×

B8

×

×

表2 测试用例组合

测试用例组合

控制台输出

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类的说明。

如果这篇文章对你有帮助,请给作者点个赞吧!  

你可能感兴趣的:(Unity开发,unity)