Unity的碰撞检测(二)

温馨提示:本文基于前一篇“Unity的碰撞检测(一)”继续探讨Collider输出,阅读本文则默认已阅读前文。

(一)测试说明

       对于Collider输出,我们首先应该保证两个游戏对象具备的是碰撞器而非触发器,所以碰撞器的IsTrigger属性必须为false。但是结合前文可知决定Trigger还是Collider输出的并不只有IsTrigger属性,对于影响两个游戏对象碰撞的因素除了碰撞器还有就是刚体,这是我们基于前文的结论所得知的。那么刚体中影响碰撞的属性有两个,分别是BodyTypeCollisionDetection

       本次测试我们约定如此:Player具备碰撞器,Enemy具备刚体,Enemy具备触发器或碰撞器,默认属性分别如图1和图2所示:

图 1 碰撞器默认属性

图 2 刚体默认属性

(二)测试用例

表 1 Enemy不同BodyType的测试用例

Enemy的碰撞器是否为触发器

用例序号

Static

Kinematic

Dynamic

×

A1

×

×

A2

×

×

A3

×

×

B1

×

×

B2

×

×

B3

×

×

表 2 测试用例的控制台输出

测试结果序号

用例序号

控制台输出

R1

A1

R2

A2

R3

A3

Collider输出

R4

B1

R5

B2

Trigger输出

R6

B3

Trigger输出

(三)测试总结

       分析1:由R1-R3可知刚体的BodyType属性为Dynamic才会出现Collider输出。

       分析2:由R4-R5可知刚体的BodyType属性为Kinematic或Dynamic才会出现Trigger输出。

       结合上述分析和前文的结论可得:

       (1)有效触发或碰撞的共有必要条件如下:

       结论1:两个游戏对象至少有一个具备刚体。

       (2)有效触发的特有必要条件如下:

       结论2:两个游戏对象必须有至少一个触发器。

       结论3:刚体的BodyType属性为Kinematic或Dynamic。

       (3)有效碰撞的特有必要条件如下:

       结论4:两个游戏对象必须有至少一个碰撞器。

       结论5:刚体的BodyType属性为Dynamic。

(四)问题

       本文我们的测试是基于Player具备碰撞器,Enemy具备刚体,Enemy具备触发器或碰撞器。这是基于仅一个游戏对象具备刚体的前提,如果两个游戏对象都具备刚体是否会因为各自的BodyType属性不同而产生不同的结果呢?我们在下一篇“Unity的碰撞检测(三)”继续探讨吧。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值