Unity的碰撞检测(五)

温馨提示:本文基于前一篇“Unity的碰撞检测(四)​​​​​​​”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic,但是Collision Detection属性不同的碰撞检测,阅读本文则默认已阅读前文。

(一)测试说明

        在基于两个游戏对象都具备碰撞器和刚体的前提下,如果碰撞器属性一致,二者刚体的属性除了Collision Detection不固定,其它属性保持一致。那么会对碰撞检测产生什么影响?事实上,Collision Detection属性并不是决定两个游戏对象是否发生碰撞的因素,而是决定二者如何发生碰撞的因素,所以测试指标我们还需要添加一个”是否高速碰撞”,高速碰撞通过Rigidbody2D.AddForce方法实现,力的大小数值为100,ForceMode2D保持默认,但是对于非高速碰撞的界定无法确认,根据实际应用中碰撞时的情况灵活选择Discrete或Continous。

        本次测试我们约定如此:Player与Enemy都具备碰撞器和刚体,且二者的刚体的BodyType均为Dynamic,默认属性如图1和图2所示:

图 1 碰撞器默认属性
图 2 刚体默认属性

(二)测试用例

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

游戏对象

测试用例序号

Discrete

Continuous

是否高速碰撞

Player

A1

×

A2

×

×

A3

×

A4

×

×

Enemy

B1

×

B2

×

×

B3

×

B4

×

×

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

组合序号

测试用例组合

测试结果

G1

A1、B1

1.Collider输出无碰撞穿透

2.碰撞穿透无Collider输出

3.Collider输出且碰撞穿透

G2

A1、B2

1.Collider输出无碰撞穿透

2.碰撞穿透无Collider输出

3.Collider输出且碰撞穿透

G3

A1、B3

Collider输出无碰撞穿透

G4

A1、B4

Collider输出无碰撞穿透

G5

A2、B1

1.Collider输出无碰撞穿透

2.碰撞穿透无Collider输出

3.Collider输出且碰撞穿透

G6

A2、B2

G7

A2、B3

Collider输出无碰撞穿透

G8

A2、B4

G9

A3、B1

Collider输出无碰撞穿透

G10

A3、B2

Collider输出无碰撞穿透

G11

A3、B3

Collider输出无碰撞穿透

G12

A3、B4

Collider输出无碰撞穿透

G13

A4、B1

Collider输出无碰撞穿透

G14

A4、B2

G15

A4、B3

Collider输出无碰撞穿透

G16

A4、B4

(三)测试总结

       分析1:由G1、G2和G5可知当Player和Enemy的刚体的Collision Detection均为Discrete时,无论二者谁进行高速碰撞测试结果都不稳定。

       分析2:由G3、G4、G7、G9-G13和G15可知Player和Enemy的刚体的Collision Detection至少有一个为Continous时,无论二者谁进行高速碰撞测试结果都是Collider输出无碰撞穿透。

       根据上述分析可得以下结论:

       结论1:两个游戏对象在发生有效碰撞的前提下,要能够正确进行碰撞检测和避免碰撞穿透则至少有一个游戏对象的刚体的Collision Detection为Continous。

(四)问题

       本文针对两个游戏对象在满足有效碰撞的前提下,对于二者的刚体的BodyType均为Dynamic,但是二者的Collision Detection属性不同而产生不同的碰撞检测结果进行探讨。那么对于一个游戏对象的刚体的BodyType为Dynamic,另一个为Kinematic,而二者的Collision Detection属性不同会产生什么样的碰撞检测结果呢?我们在下一篇“Unity的碰撞检测(六)”继续探讨吧。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/108030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Git窗口打开vim后如何退出编辑(IDEA/Goland等编辑器)

最近在学习git高级操作过程中,遇到了一下问题: 我在学习Git合并多个commit为一个的时候,需要输入一个命令 git rebase -i HEAD~2 这说明已经是编辑模式了。当我写好后,我还按照原来在linux上的按下ESC键,但是只是光…

【错误解决方案】ModuleNotFoundError: No module named ‘cPickle‘

1. 错误提示 在python程序中试图导入一个名为cPickle的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named cPickle 2. 解决方案 实际上,cPickle是Python的pickle模块的一个C语言实现,通常用于…

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测

分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测 目录 分类预测 | MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双向门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现SSA-CNN-BiGRU麻雀算法优化卷积双…

2023年中国机场建设标准、机场数量及机场系统投资完成情况分析[图]

机场,亦称飞机场、空港,较正式的名称是航空站。机场有不同的大小,除了跑道之外,机场通常还设有塔台、停机坪、航空客运站、维修厂等设施,并提供机场管制服务、空中交通管制等其他服务。 机场建设资质等级标准 资料来源…

2-多媒体数据压缩国际标准

文章目录 多媒体数据压缩编码的重要性和分类为什么要压缩?计算: 未压缩音频的数据率简答: 环绕声系统-作业题9(简述7.4.3全景声)计算: 未压缩图像的数据量-作业题10(估计尺寸及容量)计算: 未压缩视频的数据率 为什么能压缩?数据压缩编码的两大类无损压缩算法: LZ77-作业题6-(…

嵌入式中的MCU、ARM、DSP、FPGA

目录 “角色扮演” MCU ARM 特点 DSP 特点 FPGA 特点 应用 “角色扮演” MCU(Microcontroller Unit)、ARM(Advanced RISC Machine)、DSP(Digital Signal Processor)和FPGA(Field-Progr…

DevOps与CI/CD的最佳实践

在当今的软件开发领域,DevOps(开发与运维的结合)和CI/CD(持续集成/持续交付)已经成为了不可或缺的一部分。它们不仅提高了软件开发的效率,还帮助团队更快地交付高质量的软件。本文将深入探讨DevOps文化和CI…

计算机网络重点概念整理-第五章 传输层【期末复习|考研复习】

第五章 传输层 【期末复习|考研复习】 计算机网络系列文章传送门: 第一章 计算机网络概述 第二章 物理层 第三章 数据链路层 第四章 网络层 第五章 传输层 第六章 应用层 第七章 网络安全 计算机网络整理-简称&缩写 文章目录 第五章 传输层 【期末复习|考研复习…

替换所有的问号

这篇也是凑数的 哈哈.... 稍后会整合到算法通关第三关白银挑战 . 描述 : 给你一个仅包含小写英文字母和 ? 字符的字符串 s,请你将所有的 ? 转换为若干小写字母,使最终的字符串不包含任何 连续重复 的字符。 注意 : 不能 修改非 ? 字符 . 题目 : …

读图数据库实战笔记02_图数据建模

1. 概念 1.1. 实体 1.1.1. 通常用名词来表示 1.1.2. 描述一个领域中的事物或者事物类型 1.1.2.1. 汽车 1.1.2.2. 用户 1.1.2.3. 地理位置 1.1.3. 在逻辑模型和技术实现过程中,实体通常会变成“顶点” 1.2. 关系 1.2.1. 用动词(或动词短语&#…

[量化投资-学习笔记003]Python+TDengine从零开始搭建量化分析平台-Grafana画K线图

在前面两个笔记: PythonTDengine从零开始搭建量化分析平台-数据存储 PythonTDengine从零开始搭建量化分析平台-MA均线的多种实现方式 中有提到使用 Grafana 画图,不过画的都是均线。除了均线,Grafana 非常人性的提供了 K线图模块 搭配 TDeng…

设置Ubuntu 20.04的静态IP地址(wifi模式下)

一、引言 自己家用的Ubuntu的,重启后ip地址经常会改变,这个时候就需要我们手动配置静态IP了。 二、优点 给Ubuntu设置一个静态IP地址有以下几个好处: 持久性:静态IP地址是固定不变的,与设备的MAC地址绑定。这意味着…

【C++】STL容器——探究不同 [ 迭代器 ] 种类&在STL中的使用方式(15)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 引言:一.查看STL使用文档时…

网站不被谷歌收录的常见原因及解决办法

现如今的互联网中,流量获取的渠道多种多样,但对于独立站而言,Google仍然是一个重要的流量来源。这是因为Google拥有庞大的用户基础,通过Google可以让潜在用户更容易发现我们的网站。然而,现实情况是,一些网…

OSPF,RIP和BGP的路由汇总

OSPF路由汇总 OSPF的路由汇总需要注意以下两点 1.OSPF的路由汇总仅支持手动汇总 注:距离矢量路由协议支持自动路由汇总,链路状态路由协议仅支持手动路由汇总(OSPF,ISIS) 2.OSPF的路由汇总只在区域边界进行汇总 OSPF的路由汇总…

Linux系统下DHCP服务安装部署和使用实例详解(蜜罐)

目录 一、概述 二、具体配置如下: 一、概述 DHCP :动态主机设置协议(英语:Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途&…

虚幻中的网络概述一

前置:在学习完turbo强大佬的多人fps之后发觉自己在虚幻网络方面还有许多基础知识不太清楚,结合安宁Ken大佬与虚幻官方文档进行补足。 补充:官方文档中的描述挺好的,自己只算是搬运和将两者结合加强理解。 学习虚幻中的网络先从虚…

RabbitMQ如何保证消息不丢失呢?

RabbitMQ 是一个流行的消息队列系统,用于在分布式应用程序之间传递消息。要确保消息不会丢失,可以采取以下一些措施: 持久化消息: RabbitMQ 允许你将消息标记为持久化的。这意味着消息将被写入磁盘,即使 RabbitMQ 服务…

JavaScrip的DOM接口

JavaScript的DOM(Document Object Model)是一种接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM是一种将HTML或XML文档表示为对象树的标准方式。 在JavaScript中,DOM提供了一种方式来操作HTML或XML文档的元素…

【BUG】Nginx转发失败解决方案

最近在做项目的时候出现了一个问题,琢磨了好久,来浅浅记录一下。 这个项目后端使用的是gateway网关和nacos实现动态的路由,前端使用nginx来管理前端资源,大体流程:浏览器发起请求,经过nginx代理&#xff0c…