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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Appium中使用AI定位

当我们在写自动化测试脚本的时候,传统情况下一定要知道元素的属性,如id、name、class等。那么通过AI的方式定位元素可能就不需要知道元素的属性,评价人对元素的判断来定位,比如,看到一个搜索框,直接使用ai:…

大麦订单生成器 大麦订单一键生成截图

1、能够一键的进行添加,生成的假订单是没有水印的,界面也很真实。 2、在软件中输入生成的信息,这里输入的是商品信息,选择生成的商品图片,最后生成即可。 新版大麦订单生成 图样式展示 这个样式图就是在大麦生成完…

js sm4实现加密解密

2023.10.25今天我学习了如何使用sm4进行加密解密: 注意:前端和后端的编码必须相同才能使用,不然会出现空字符串的错误。 一、首先安装sm4.js包: npm i sm4js package.json中的版本: (安装失败的话可以直接…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述(如果拓扑排序不清楚可以去做一下lc 207. 课程表) 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…

如何将SAP数据集成到任意云平台

十年前就在使用SAP的客户询问我当时突然出现的新事物:大数据。五年前,变成了数据湖和机器学习。现在一切都是关于数据集成,当然还有人工智能。有时处理数据的基本方法已经改变或者发展。有时只是名字的改变。例如,在过去十年中&am…

Dataset文件下载以及使用,以nuswide为例

文章目录 文件夹结构如何使用继承torch.utils.data.Dataset构建新的class构建新的Dataloader 数据集要求以文章 multi-label learning from single positive label为例; 文件夹结构 Flickr/formatted_train_images.npyformatted_train_labels.npyformatted_train_…

2023 年值得关注的国外网络安全初创公司

网络安全初创公司试图解决的问题往往有点超前于主流。他们可以比大多数老牌公司更快地填补空白或新兴需求。初创公司通常可以更快地创新,因为它们不受安装基础的限制。 当然,缺点是初创公司往往缺乏资源和成熟度。公司致力于初创公司的产品或平台是有风…

Rust 语言介绍及安装

目录 1、简介 1.1 为什么选择Rust 高性能 可靠性 生产力 1.2 用 Rust 构建应用 命令行 WebAssembly 网络 嵌入式 2、安装 Rust Windows 的 Linux 子系统(WSL) 检查Rust 是最新的 卸载Rust版本: Cargo:Rust 的构建工…

读图数据库实战笔记03_遍历

1. Gremlin Server只将数据存储在内存中 1.1. 如果停止Gremlin Server,将丢失数据库里的所有数据 2. 概念 2.1. 遍历(动词) 2.1.1. 当在图数据库中导航时,从顶点到边或从边到顶点的移动过程 2.1.2. 类似于在关系数据库中的查…

华为OD机考算法题:乘坐保密电梯

题目部分 题目乘坐保密电梯难度难题目说明难 有一座保密大楼,你从 0 楼到达指定楼层 m,必须这样的规则乘坐电梯: 给定一个数字序列,每次根据序列中的数字 n,上升 n 层或者下降 n 层,前后两次的方向必须相反&#xff0…

Miniconda、Vscode下载和conda源、pip源设置

1、常用软件下载 1、Miniconda软件下载: windows网址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CS&OA 2、最新版Miniconda下载网址:https://docs.conda.io/projects/miniconda/en/latest/ 3、常用代码编辑器VsCode下…

IDE的组成

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务…

山西电力市场日前价格预测【2023-10-30】

日前价格预测 预测说明: 如上图所示,预测明日(2023-10-30)山西电力市场全天平均日前电价为309.35元/MWh。其中,最高日前电价为400.33元/MWh,预计出现在18:15。最低日前电价为0.00元/MWh,预计出…

kubeadm源码解读与实战(2)

kubernetes源码二次开发系列2 1、源码角度重新认识kubernetes 2、kubernetes的联合创始人及背后的历史 3、kubernetes的架构设计与组件 4、kubernetes功能开发流程 5、理解kubernetes代码结构 6、本地编译kubernetes代码流程 7、源码编译用到的5种代码生成器 8、conver…

OpenCV ycrcb颜色空间

Opencv中有一个Ycrcb的选项,这个选项其实是Yuv444packet. 下面代码从文件中获取到一个yuv444planar的文件,通过手动转换,将其转为YcrCb,然后进行颜色空间csc. 所以可以确定这是一个packet的存储格式 def yuv444p_2_bgr8_opencv(…

【计算机网络笔记】传输层服务概述、传输层 vs. 网络层

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

Openssl数据安全传输平台014:OCCI的安装配置和使用:Centos8-Oracle19c代码跑通 + Window代码没跑通(不影响本项目)

文章目录 0 代码仓库1 启动Centos oracle数据库2 Winsows安装配置OCCI库2.1 下载文件2.2 VS 配置2.2.1 VC包含目录2.2.2 VC库目录2.2.3 连接器-附加依赖项2.2.4 代码测试-Oracle11g2.2.4.1 准备2.2.4.2 代码测试 3 Centos安装配置occi库3.1 下载instantclient库文件压缩包3.2 w…

微服务parent工程和子工程pom文件配置注意

parent工程 重要配置&#xff1a; <!-- 父工程 --><packaging>pom</packaging><!-- 聚合 --><modules><module>../base</module><module>../gateway</module><module>../user-service</module><mod…

Swift如何优雅漂亮的打印字典、json

Swift如何优雅漂亮的打印字典、json Prettier debug output printing Swift Dictionary in Xcode When I use print() on a dictionary in Swift, it comes out nice and pretty in the console, with a key and a value. 在Swift中&#xff0c;使用print()打印字典的时候&a…

3 Go的基础语法

概述 在上一节的内容中&#xff0c;我们介绍了第一个Go程序&#xff0c;包括&#xff1a;安装Go环境、编写第一个Go程序、编译并运行程序等。在本节中&#xff0c;我们将介绍Go的基础语法。Go是一门简洁和优雅的语言&#xff0c;有自己特殊的一些语法规则。因此&#xff0c;在介…