• Unity的碰撞检测(四)


    温馨提示:本文基于前一篇“Unity的碰撞检测(三)”继续探讨两个游戏对象具备刚体的触发检测,阅读本文则默认已阅读前文。

    (一)测试说明

            在基于两个游戏对象都具备触发器和刚体且属性一致的条件下,若二者刚体的BodyType有所不同是否会出现不同的测试结果。

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

    图 1 触发器默认属性

    图 2 刚体默认属性

    (二)测试用例

    表 1 Player和Enemy的刚体的BodyType测试用例

    游戏对象

    测试用例序号

    Static

    Kinematic

    Dynamic

    Player

    A1

    ×

    ×

    A2

    ×

    ×

    A3

    ×

    ×

    Enemy

    B1

    ×

    ×

    B2

    ×

    ×

    B3

    ×

    ×

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

    组合序号

    测试用例组合

    控制台输出

    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的碰撞检测(五)”继续探讨吧。

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

  • 相关阅读:
    数据增强--学习笔记(图像类,cnn)
    Hive面试常见基础问题
    css 渐变色进度条
    k8s 通过helm发布应用
    armv8/armv9/aarch64/arm64/A64/架构/IP你不知道的那些事
    薛定谔的文件上传
    Selenium入门(一)Java 搭建 Selenium 环境
    Overleaf论文排版踩坑记录
    virtualbox7 虚拟机与宿主机互传文件、共享u盘
    告别Word,用Python打造你的专业简历!
  • 原文地址:https://blog.csdn.net/hgf1037882434/article/details/134048465