第二十六章 Unity碰撞体Collision(上)
在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复杂的,我们不可能按照模型的原始形状进行两者之间的碰撞检测,而是将模型看做近似的立方体或者球体来进行碰撞检测,虽然这种形式的检测精度不是很高,但是对于一般的游戏体验来讲,已经足够了。
在Unity中碰撞体分为:盒型碰撞体、球形碰撞体和胶囊碰撞体,还有一个网格碰撞体。当然,我们还可以将任意数量的上述碰撞体添加到单个游戏对象以创建复合碰撞体。复合碰撞体可以更加贴近的模拟游戏对象的形状,同时保持较低的性能开销。复合碰撞体一般用于父子化的游戏对象,并且根游戏对象上应该只使用一个刚体组件。在某些情况下,如果复合碰撞体也不够准确。我们才可以使用网格碰撞体精确匹配游戏对象网格的形状。网格碰撞体需要更高的性能开销,因此请尽量不要在游戏中大量使用。此外,网格碰撞体之间无法进行碰撞检测,只能是简单的盒型或球形碰撞体与网格碰撞体进行碰撞检测。
接下来,我们创建一个新的场景“SampleScene2.unity”来演示碰撞体的使用。

我们在一个平面上面添加两个球体,默认情况下,创建的球体会自动添加球形碰撞体。


如上图所示中的“Sphere Collider”球形碰撞组件,为了能够让我们左边的黄色球体Sphere2产生运动,我们需要添加一个刚体,如下所示:

此时,我们的黄色球体Sphere2同时具备了碰撞体和刚体两个组件。接下来,我们给黄色球体施加一个力,让其能够向右运动去撞击紫色的球体Sphere1。

我们增加了一个X轴方向的数值为2的力。接下来,我们就运行这个工程来查看效果:

我们发现,当黄色球体接触到紫色球体的时候,就静止不动了。我们暂时不解释这个结果。我们上面提到过,球体是自动添加球形碰撞体的,也就是说,我们的紫色球体上面有一个球形碰撞体(没有刚体)。我们取消紫色球体上面的球形碰撞体,在重新运行这个工程。


我们发现,黄色球体会穿过紫色球体继续向右运动下去。从紫色球体的表现,我们可以看出碰撞体组件最明显的表现就是不会让对方游戏对象穿透(也叫穿模)。接下来,我们将黄色球体的碰撞体组件也取消掉(同时取消刚体Use Gravity属性,防止重力影响掉落平面以下),也就是说两个球体都没有碰撞体组件了。如果我们再次运行工程的话,就会发现黄球依然穿透紫球。那么,我们恢复紫球的碰撞体组件呢?我们再次运行工程,就会发现黄色再次穿透紫球了。最后的结论就是,两者都具备碰撞体组件的时候,才会发生碰撞检测。这个道理非常简单,熟悉我们DirectX课程的应该知道,碰撞检测的本质就是两个碰撞模型进行相互包含计算,因此碰撞双方都必须具备碰撞体,否则没办法进行检测计算。
接下来,我们就来介绍一些碰撞体组件的参数。

首先是Edit Collider按钮,点击这个按钮,可以让我们可视化的调整碰撞体的尺寸。

点击线框连接点,拖动就可以修改碰撞体的大小,同时在Inspector检视面板中看到

上图中的中心点的Y值和半径Radius值就随之改变了。对于圆形来讲,只需要圆心和半径就能确定它的大小了。这一点应该很容易理解。当然我们还可以通知修改数值改变大小。

Is Trigger是一个触发选项,后面我们会详细介绍它。
Material代表物理材质。当碰撞体相互作用时,它们的表面需要模拟所应代表的材质的属性。例如,一块冰将是光滑的,而橡胶球将提供大量摩擦力并且弹性很好。虽然碰撞时碰撞体的形状不会变形,但可以使用 Physics Materials(物理材质)配置碰撞体的摩擦力和弹力。
Center就是碰撞体的中心,默认X/Y/Z都是0,等效于于局部坐标系原点。
Radius是圆形碰撞体的半径大小,默认值是0.5。
如果是盒型碰撞体的话,这里应该是Size属性,其X/Y/Z代表盒性的长宽高。

如果是胶囊碰撞体的话,这里应该是Radius和Height,以及Direction三个属性。其中Radius代表胶囊体的半径,Height代表胶囊体的高度,而Direction则是局部空间中纵向方向的轴,默认是Y轴。胶囊体通常用来模拟“人形”形状进行碰撞检测,因此多用于人物角色上。

我们使用碰撞体的时候,最重要的注意点就是,让碰撞体的尺寸能够恰当的包裹住我们的模型。因为我们是在Unity上创建的球体,而Unity会根据球体的尺寸自动匹配添加球型碰撞体。因此,球体模型和球型碰撞体的尺寸是非常吻合的。但是,如果是我们自己手动导入的FBX格式的3D模型,Unity就不能保证碰撞体能够恰当的包裹住3D模型了。碰撞体能够恰当的包裹3D模型非常的重要,这个将直接决定我们游戏中模型之间的碰撞检测,因为碰撞体是不可见的,我们只能通过模型与模型的距离来检查是否发生碰撞。但是我们自己都很明白,模型与模型的距离并不代表碰撞体与碰撞体之间的距离。如果模型与碰撞体不能恰当的包裹,那么我们可能在视觉上产生很大的差异,影响游戏体验。
本课程涉及的内容已经共享到百度网盘:https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id
相关文章:
第二十六章 Unity碰撞体Collision(上)
在游戏世界中,游戏物体之间的交互都是通过“碰撞接触”来进行交互的。例如,攻击怪物则是主角与怪物的碰撞,触发机关则是主角与机关的碰撞。在DirectX课程中,我们也大致介绍过有关碰撞检测的内容。游戏世界中的3D模型的形状是非常复…...
Qt Installer Framework使用教程:
步骤一: 下载并安装Qt Installer Framework工具 http://download.qt.io/official_releases/qt-installer-framework/ 将安装目录添加到环境变量,如安装D盘时D:\Qt\QtIFW-4.5.0\bin 步骤二: 将测试例子(如D:\Qt\QtIFW-4.5.0\…...
nodejs+vue+java农村信息化服务平台
用户的登录模块:用户登录本系统,对个人的信息等进行查询,操作可使用的功能。 用户注册模块:游客用户可以进行用户注册,系统会反馈是否注册成功。 添加管理员模块:向本系统中添加更多的管理人员,…...
代码随想录补打卡 62不同路径 63 不同路径2
代码如下 func uniquePaths(m int, n int) int { dp : make([][]int,m) //定义一个二维数组 for i : 0 ; i < m ; i { //遍历这个二维数组的每个元素,并将每个元素都定义为一个一维数组 dp[i] make([]int,n) //这样就生成了图中的一个二维网格 dp[i][0] …...
树的存储和遍历
文章目录 6.5 树与森林6.5.1 树的存储结构1. 双亲表示法(顺序存储结构)2 孩子链表表示法3 孩子兄弟表示法(二叉树表示法) 6.5.2 森林与二叉树的转换1 树转换成二叉树2 二叉树转换成树3 森林转换成二叉树4 二叉树转换成森林 6.5.3 树和森林的遍历1. 树的遍历2. 森林的遍历 6.6 赫…...
MySQL的ID用完了,怎么办?
目 录 一 首先首先分情况 二 自增ID 1 mysql 数据库创建一个自增键的表 2 导出表结构 3 重新创建 自增键是4294967295的表 4 查看表结构 5 异常测试 三 填充主键 1 首先创建一个test 表,主键不自增 2 插入主键最大值 3 再次插入主键最大值1 四 没有声明…...
JSP基于Iptables图形管理工具的设计与实现(源代码+论文)
Netfilter/Iptables防火墙是Linux平台下的包过滤防火墙,Iptables防火墙不仅提供了强大的数据包过滤能力,而且还提供转发,NAT映射等功能,是个人及企业级Linux用户构建网络安全平台的首选工具。但是,由于种种原因&#x…...
什么是数据库分片?
什么是数据库分片? 数据库分片是指将一个大型数据库拆分成多个小型数据库,每个小型数据库称为一个分片。通过这种方式,可以将数据库的负载分散到多个服务器上,从而提高数据库的性能和可伸缩性。 为什么需要数据库分片?…...
软件工程知识点
软件工程提出的时代和背景 软件工程化的层次 软件开发过程 敏捷与计划开发 演化式开发和DevOps 软件配置管理过程和相关工具名 软件质量和代码异味 能够分析常见的代码异味和bug 代码复杂度和计算圈复杂度 了解代码异味和重构行为的关系 了解自动化单元测试框架xunit…...
华为OD机试 - 投篮大赛(Python)
题目描述 你现在是一场采用特殊赛制投篮大赛的记录员。这场比赛由若干回合组成,过去几回合的得分可能会影响以后几回合的得分。 比赛开始时,记录是空白的。 你会得到一个记录操作的字符串列表 ops,其中ops[i]是你需要记录的第i项操作,ops遵循下述规则: 整数x-表示本回合…...
《花雕学AI》讯飞星火认知大模型的特点和优势,与ChatGPT的对比分析
引言: 人工智能是当今科技领域的热门话题,自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言,实现人机交互和智能服务。近年来,随着深度学习的发展,自然语言处理领域出现了许多创…...
【Python入门】Python的判断语句(if else 语句)
前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…...
(4.28-5.4)【大数据新闻速递】数字中国峰会成功举办;“浙江数据知识产权登记平台”上线;贵州大数据活跃;AI教父从谷歌离职
01【2023年数字中国建设峰会数字福建分论坛成功举办】 2023年数字中国建设峰会数字福建分论坛由福建省人民政府主办,福建省数字福建建设领导小组办公室、数字中国研究院(福建)和福建省大数据集团承办。分论坛于2023年4月28日下午14:30 -17:3…...
领域驱动设计(Domain Driven Design)之建立领域模型
文章目录 用领域模型表达领域概念建立模型使用通用语言验证模型识别构造块类型设计聚合如何使用领域模型再次思考总结用领域模型表达领域概念 在实际项目中,模型设计者往往过早陷入具体构造块类型的识别,比如实体、聚合、领域服务,而忽略了领域模型表达领域概念的目的。我们…...
有研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具(下)
导语:研究员公开了一个解析并提取 Dell PFS BIOS 固件的工具。 Apple EFI IM4P分配器 介绍 解析苹果多个EFI固件.im4p文件,并将所有检测到的EFI固件分割为单独的SPI/BIOS映像。 使用 你可以拖放或手动输入包含Apple EFI IM4P固件的文件夹的完整路径。…...
iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Pyth…...
【MOMO】高水平期刊目录(持续更新)
高水平期刊目录 引言1 顶级期刊目录(A)1.1 IEEE Transactions on Intelligent Transportation Systems1.2 IEEE Transactions on Neural Networks and Learning Systems1.3 Engineering 2 权威期刊目录(A)2.1 Measurement 3 鼓励期…...
LVS负载均衡集群--DR模式
一、LVS-DR集群介绍 LVS-DR(Linux Virtual Server Director Server)工作模式,是生产环境中最常用的一 种工作模式。 1、LVS-DR 工作原理 LVS-DR 模式,Director Server 作为群集的访问入口,不作为网关使用࿰…...
RabbitMQ --- 死信交换机
一、简介 1.1、什么是死信交换机 什么是死信? 当一个队列中的消息满足下列情况之一时,可以成为死信(dead letter): 消费者使用basic.reject或 basic.nack声明消费失败,并且消息的requeue参数设置为false…...
如何在个人web项目中使用会话技术(cookiesession)?
编译软件:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 服务器软件:apache-tomcat-8.5.27 目录 一. 什么是会话?二. 为什么要使用会话技术?三. 如何使用会话技术?3.1 Cookie(客户端的会话技术…...
PostgreSQL CASE语句深度解析:性能、类型与NULL安全实战指南
1. 为什么你必须真正吃透 PostgreSQL 的 CASE 语句——它远不止是 SQL 里的“if-else”翻译器在 PostgreSQL 实战中,我见过太多人把CASE当成一个语法糖:写几个WHEN...THEN,加个ELSE,再套个END,就以为搞定了。结果呢&am…...
别再死记硬背Payload了!我用XSS-Game靶场,带你拆解18种过滤规则背后的绕过逻辑
从XSS-Game靶场实战中掌握18种过滤规则的逆向思维在网络安全领域,跨站脚本攻击(XSS)始终是Web应用面临的主要威胁之一。许多开发者虽然了解XSS的基本概念,但当面对各种复杂的过滤规则时,往往不知如何系统分析并构造有效…...
sudo企业级应用【20260525】001篇
文章目录 一、总体设计思路 1️⃣ 设计原则 2️⃣ 日志策略(重点) 二、10 个真实生产场景(含 sudoers 配置) 🔹 Linux 系统管理(3 个) ✅ 场景 1:基础运维(用户 / 权限) ✅ 场景 2:磁盘与文件系统 ✅ 场景 3:网络与防火墙 🔹 云管理(2 个) ✅ 场景 4:云 CLI …...
VMware ESXi 9.1.0.0集成NVME+网卡驱动版发布|新特性+驱动集成+部署升级+FAQ全指南
一、ESXi 9.1.0.0 正式版核心新特性 VMware ESXi 9.1.0.0(2026 年 5 月发布)是 vSphere 9.1 核心组件,聚焦硬件兼容扩展、性能跃升、安全加固、运维简化四大方向,重点强化 NVMe 存储与网卡生态适配,以下为关键更新&am…...
基于ESP32的智能电池充电器设计:多化学体系支持与模块化架构
1. 项目概述:打造一台全能的“电池医生”手头攒了一堆不同化学体系的电池,从航模用的4S锂聚合物电池,到应急灯里的12V铅酸电池,再到各种工具里的镍氢、锂离子电池,每次充电都得翻出好几个不同的充电器,桌面…...
打不开JupyterLab
因为安装某些依赖导致JupyterLab的依赖被动升级或降级,从而影响了JupyterLab的运行,此时可以SSH登录到实例,然后输入jupyter-lab命令进行确认,如果执行命令报错则说明是此问题,那么可以通过pip install jupyterlab再次…...
广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境
【导语:广州因特智能科技孵化于西安电子科技大学广州研究院,专注用AI视觉技术解决工业场景的“卡脖子”检测难题,为半导体、光通信、新能源三大领域提供高端检测装备。】校地合作孵化,构建完整能力体系广州因特智能科技由西安电子…...
基于雷达与光敏传感器的低功耗智能窗防设备设计与实现
1. 项目概述:一个基于雷达与光敏的智能窗防设备几年前,我因为一次短暂的出差,家里空置了几天,回来后就一直琢磨着怎么给家里的窗户加点“动静”。市面上的智能安防摄像头固然好,但要么需要复杂的布线,要么云…...
输电线路在线监测系统|架空线路安全运行的“第一道防线“!
输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统,实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...
独立开发者利用taotoken模型广场为不同任务选择性价比最优模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者利用taotoken模型广场为不同任务选择性价比最优模型 对于独立开发者而言,在有限的预算内高效完成多样化的开…...
