当前位置: 首页 > news >正文

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

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

相关文章:

Unity的碰撞检测(五)

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

Flutter笔记:Flutter的应用生命周期状态(lifecycleState)管理

Flutter笔记 Flutter的应用生命周期状态(lifecycleState)管理 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/…...

代碼隨想錄算法訓練營|第五十四天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组。刷题心得(c++)

讀題 300.最长递增子序列 看完代码随想录之后的想法 思想上很簡單,dp[i]表示i之前的包括i的numbers[i]節尾的最長上升子序列的長度 並且透過兩層迴圈,一層遍歷全部,一層遍歷到i,透過比較當前dp[i]還是dp[j] 1哪個比較大&…...

正点原子嵌入式linux驱动开发——Linux 串口RS232/485/GPS 驱动

串口是很常用的一个外设,在Linux下通常通过串口和其他设备或传感器进行通信,根据 电平的不同,串口分为TTL和RS232。不管是什么样的接口电平,其驱动程序都是一样的,通过外接RS485这样的芯片就可以将串口转换为RS485信号…...

HDFS工作流程和机制

HDFS写数据流程(上传文件) 核心概念--Pipeline管道 HDFS在上传文件写数据过程中采用的一种传输方式。 线性传输:客户端将数据写入第一个数据节点,第一个数据节点保存数据之后再将快复制到第二个节点,第二节点复制给…...

CMMI/ASPICE认证咨询及工具服务

服务概述 质量专家戴明博士的名言“如果你不能描述做事情的过程,那么你不知道你在做什么”。过程是连接有能力的工程师和先进技术的纽带,因此产品开发过程直接决定了产品的质量和研发的效率。 经纬恒润可结合多体系要求,如IATF16949\ISO26262…...

【NI-DAQmx入门】计数器

1.计数器的作用 NI产品的计数器一般来说兼容TTL信号,定义如下:0-0.8V为逻辑低电平,2~5V为高电平,0.8-2V为高阻态,最大上升下降时间为50ns。 计数器可以感测上升沿(从逻辑低到逻辑高的转变)和下降…...

Python爬取读书网的图片链接和书名并保存在数据库中

一个比较基础且常见的爬虫,写下来用于记录和巩固相关知识。 一、前置条件 本项目采用scrapy框架进行爬取,需要提前安装 pip install scrapy# 国内镜像 pip install scrapy -i https://pypi.douban.com/simple 由于需要保存数据到数据库,因…...

js解决加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost &…...

【c++|opencv】二、灰度变换和空间滤波---5.中值滤波

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 1. 中值滤波 #include<iostream> #include<opencv2/opencv.hpp> #include"Salt.h"using namespace cv; using namespace std;voi…...

python之pytorch多进程

目录 1、创建并运行并行进程 2、使用队列&#xff08;Queue&#xff09;来共享数据 3、进程池 4、进程锁 5、比较使用多进程和使用单进程执行一段代码的时间消耗 6、共享变量 多进程是计算机科学中的一个术语&#xff0c;它是指同时运行多个进程&#xff0c;这些进程可以…...

sqoop 抽数报错com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 2 -> 3

文章目录 1.sqoop 抽数报错: Caused by: com.mysql.cj.exceptions.WrongArgumentException: HOUR_OF_DAY: 2 -> 3 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructor…...

【Acwing170】加成序列(dfs+迭代加深+剪枝)题解和一点感想

本思路来自acwing算法提高课 题目描述 看本文需要准备的知识 1.dfs算法基本思想 2.对剪枝这个词有个简单的认识 迭代加深思想和此题分析 首先&#xff0c;什么是迭代加深呢&#xff1f;当一个问题的解有很大概率出现在递归树很浅的层&#xff0c;但是这个问题的解本身存在…...

Android开发知识学习——Kotlin进阶

文章目录 次级构造主构造器init 代码块构造属性data class相等性解构Elvis 操作符when 操作符operatorLambdainfix 函数嵌套函数注解使用处目标函数简化函数参数默认值扩展函数类型内联函数部分禁用用内联具体化的类型参数抽象属性委托属性委托类委托 Kotlin 标准函数课后题 次…...

iOS使用AVCaptureSession实现音视频采集

AVCaptureSession配置采集行为并协调从输入设备到采集输出的数据流。要执行实时音视频采集&#xff0c;需要实例化采集会话并添加适当的输入和输出。 AVCaptureSession&#xff1a;管理输入输出音视频流AVCaptureDevice&#xff1a;相机硬件的接口&#xff0c;用于控制硬件特性…...

springboot和flask整合nacos,使用openfeign实现服务调用,使用gateway实现网关的搭建(附带jwt续约的实现)

环境准备&#xff1a; 插件版本jdk21springboot 3.0.11 springcloud 2022.0.4 springcloudalibaba 2022.0.0.0 nacos2.2.3&#xff08;稳定版&#xff09;python3.8 nacos部署&#xff08;docker&#xff09; 先创建目录&#xff0c;分别创建config&#xff0c;logs&#xf…...

深入浅出排序算法之基数排序

目录 1. 前言 1.1 什么是基数排序⭐⭐⭐ 1.2 执行流程⭐⭐⭐⭐⭐ 2. 代码实现⭐⭐⭐ 3. 性能分析⭐⭐ 3.1 时间复杂度 3.2 空间复杂度 1. 前言 一个算法&#xff0c;只有理解算法的思路才是真正地认识该算法&#xff0c;不能单纯记住某个算法的实现代码&#xff01; 1.…...

CSS选择器、CSS属性相关

CSS选择器 CSS属性选择器 通过标签的属性来查找标签&#xff0c;标签都有属性 <div class"c1" id"d1"></div>id值和class值是每个标签都自带的属性&#xff0c;还有另外一种&#xff1a;自定义属性 <div class"c1" id"d1&…...

设计模式(21)中介者模式

一、介绍&#xff1a; 1、定义&#xff1a;中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为型设计模式&#xff0c;它通过引入一个中介者对象来降低多个对象之间的耦合度。在中介者模式中&#xff0c;各个对象之间不直接进行通信&#xff0c;而是通过中介者对象…...

JVM虚拟机:通过一个例子解释JVM中栈结构的使用

代码 代码解析 main方法执行&#xff0c;创建栈帧并压栈。 int d8&#xff0c;d为局部变量&#xff0c;是基础类型&#xff0c;它位于虚拟机栈的局部变量表中 然后创建了一个TestDemo的对象&#xff0c;这个对象在堆中&#xff0c;并且这个对象的成员变量&#xff08;day&am…...

【GitHub项目推荐--Carbonyl:终端里的 Chromium 图形浏览器】⭐⭐⭐⭐⭐

简介 Carbonyl​ 是一个基于 Chromium 引擎、专为终端&#xff08;Terminal&#xff09;环境构建的开源图形浏览器。它并非 Lynx 那样的纯文本浏览器&#xff0c;而是通过 Unicode 块字符和 ANSI 颜色&#xff0c;将网页以像素级图形的方式渲染在命令行窗口中。该项目最初源于…...

ArcGIS重分类实战:手把手教你搞定SWAT模型土地利用数据库(附CNLUCC对照表)

ArcGIS重分类实战&#xff1a;从CNLUCC到SWAT模型土地利用数据库的完整指南 当你第一次打开SWAT模型准备进行水文模拟时&#xff0c;最令人头疼的环节之一就是处理土地利用数据。作为中国研究者&#xff0c;我们手头往往只有CNLUCC分类的土地利用栅格数据&#xff0c;而SWAT模型…...

收藏!小白也能看懂:Transformer残差连接新处理方式,大模型学习必备!

本文介绍了Kimi团队提出的一种新的Transformer残差连接处理方式&#xff0c;旨在解决传统Transformer模型中“PreNorm稀释”问题。通过引入“注意力残差”&#xff0c;每一层使用Softmax机制选择性地组合前层输出&#xff0c;有效缓解了深层网络训练中的梯度消失问题。此外&…...

Navicat Reset Mac工具:3种无风险试用期重置方法,零基础也能掌握

Navicat Reset Mac工具&#xff1a;3种无风险试用期重置方法&#xff0c;零基础也能掌握 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 您是否遇到过Navicat试用期到期的困扰&…...

H3C防火墙双机热备(RBM)部署后,别忘了这3个关键监控与排错点(含track接口/VRRP状态查看)

H3C防火墙双机热备&#xff08;RBM&#xff09;部署后的3个关键运维盲区与实战排错指南 当你在数据中心完成H3C防火墙双机热备部署时&#xff0c;真正的挑战才刚刚开始。很多工程师以为配置完remote-backup-group和VRRP就万事大吉&#xff0c;直到深夜被报警电话惊醒才发现——…...

解锁3大技术场景:PptxGenJS自动化演示文稿实战指南

解锁3大技术场景&#xff1a;PptxGenJS自动化演示文稿实战指南 【免费下载链接】PptxGenJS Create PowerPoint presentations with a powerful, concise JavaScript API. 项目地址: https://gitcode.com/gh_mirrors/pp/PptxGenJS 在数字化办公与开发领域&#xff0c;演示…...

实测才敢推!盘点2026年用户挚爱的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。最新实测数据显示&#xff0c;2026年AI论文网站正以惊人的效率重塑学术写作&#xff0c;覆盖选题构思、文献综述、内容生成、格式排版等全流程场景&#xff0c;真正实现高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链…...

5分钟掌握OptiScaler:让所有显卡都能享受DLSS级画质的免费神器

5分钟掌握OptiScaler&#xff1a;让所有显卡都能享受DLSS级画质的免费神器 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为显…...

摆脱论文困扰!高效论文写作全流程AI论文平台推荐(2026 最新)

论文写作全流程可拆解为文献调研→选题/开题→大纲/初稿→文献综述→降重/去AI味→润色/格式→查重/投稿七大环节&#xff0c;2026年AI论文平台按环节精准匹配&#xff0c;兼顾中文适配、降重能力、去AI痕迹、学术合规四大核心需求&#xff0c;覆盖免费/付费、通用/垂直场景。一…...

5个真实案例带你玩转大模型Function Calling:从加法计算到多表查询

5个真实案例带你玩转大模型Function Calling&#xff1a;从加法计算到多表查询 在人工智能技术飞速发展的今天&#xff0c;大模型的Function Calling功能正成为开发者工具箱中的利器。不同于简单的文本生成&#xff0c;Function Calling让大模型具备了与现实世界交互的能力&…...