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

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

  • 相关阅读:
    SSH 免密登录:普通用户免密配置登录仍需输入密码
    【含视频教程】python实现图书管理系统
    MybatisX快速开发插件模版扩展
    关于博主的介绍
    Mysql(视图)
    单片机ADC常见的几种滤波方法
    Vue3全家桶 - VueRouter - 【1】快速使用(创建路由模块 + 规定路由模式 + 使用路由规则 + RouterView-RouterLink)
    开源数字基础设施 项目 -- Speckle
    React之DOM的diff算法
    短视频seo矩阵系统源码开发部署搭建分享(一)
  • 原文地址:https://blog.csdn.net/hgf1037882434/article/details/134048465