Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
目录
Collider 2D
定义:
类型:
Rigidbody 2D
定义:
属性和行为:
运动控制:
碰撞检测:
结合使用
实用检测
延伸拓展
1、在Unity中优化Collider 2D和Rigidbody 2D的性能
2、Unity中Collider 2D的高级使用技巧
3、Rigidbody 2D与其他物理组件(如Collider 2D)结合使用的最佳实践
4、在Unity中实现复杂物理效果(如水体、火光等)时,有效地使用Collider 2D和Rigidbody 2D
5、针对不同类型的碰撞器(Box, Circle, Polygon, Edge),Unity提供的特定优化或调整建议
Box Collider:
Circle Collider:
Polygon Collider:
Sphere Collider:
Collider 2D
-
定义:
Collider 2D
是一个组件,它为游戏对象提供了一个物理边界,允许与其他具有相同或不同类型的Collider 2D
进行碰撞检测。可以选择“Is Trigger”选项来决定该碰撞器是否具有实际物理存在。如果设置为true,则该碰撞器仅用于检测碰撞事件,而不影响物理模拟。 -
类型:
Unity提供了多种类型的Collider 2D
,包括:
- Box Collider 2D:矩形形状的碰撞器,非常高效且适用于可交互的形状。
- Circle Collider 2D:圆形碰撞器,适用于简单的圆形物体。
- Polygon Collider 2D:多边形碰撞器,可以自定义任何多边形形状,但计算较慢。
- Edge Collider 2D:边缘碰撞器,没有面积,适用于静态、非交互的凹形形状。
Rigidbody 2D
-
定义:
Rigidbody 2D
是一个组件,它将游戏对象置于物理引擎的控制之下,使其能够响应重力、摩擦力、碰撞等物理现象。 -
属性和行为:
Rigidbody 2D
与标准的Rigidbody
类似,但专为二维开发进行了优化。例如,带有Rigidbody 2D
的游戏对象只能在XY平面内移动,并且只能围绕垂直于该平面的轴旋转。- 它可以设置不同的质量(Mass),并根据需要调整其他物理参数如阻力(Drag)和角阻力(Angular Drag)。
-
运动控制:
- 使用API如
Rigidbody2D.MovePosition
或Rigidbody2D.MoveRotation
来直接移动或旋转游戏对象。 - 可以通过脚本编写逻辑来决定物体如何移动和反应于各种物理事件。
- 使用API如
-
碰撞检测:
当一个带有
Rigidbody 2D
的游戏对象与另一个带有碰撞器的游戏对象发生碰撞时,Unity会自动处理这些碰撞事件,并更新物体的位置和速度。
结合使用
- 在大多数情况下,为了实现逼真的物理效果,建议将
Rigidbody 2D
附加到具有相应碰撞器的游戏对象上。这样,Unity的物理引擎就能准确地模拟出重力、碰撞和其他物理力对物体的影响。- 对于需要特殊处理的场景,如跳跃平台或水体效果,可以使用特定的效应器(Effectors),如Platformer Effector 2D、Buoyancy Effector 2D等。
实用检测
一、给地板floor添加碰撞器,这里我们不添加刚体Rigibody,因为会使地板因为重力而下落。
二、再给小球加上刚体rigibody 2d 组件和碰撞器circle colliders 2d 组件
三、在资源asset栏点击鼠标右键创建,点击2D创建
四、 进行物理材料创建,点击Physics materrial 2d
五、调整弹力大小,拉到合适位置
六、拖拽物理材料到小球ball上的碰撞器组件中,边完成了
七、效果展示
Unity简单实现小球弹跳效果
延伸拓展
1、在Unity中优化Collider 2D
和Rigidbody 2D
的性能
在Unity中优化Collider 2D
和Rigidbody 2D
的性能可以通过以下几种方法实现:
避免直接操作Transform:当操作附加了
Rigidbody 2D
的物体时,不要直接通过操作Transform来移动、旋转它。这是因为Rigidbody 2D
组件会覆盖Transform,并更新其位置和旋转以反映物理引擎计算的结果。如果尝试手动修改Transform,可能会导致游戏对象相互穿插或出现不可预测的运动。使用复合碰撞器(Composite Collider 2D) :复合碰撞器可以将多个碰撞器合并为单个碰撞器,这在大型地图等情况下尤其有效,因为它可以减少碰撞检测的计算量,从而提高性能。
调整密度设置:通过更改密度值,可以更改游戏对象关联的
Rigidbody 2D
的质量计算。例如,将密度设置为0可以忽略该物体在所有质量计算中的影响,包括质心计算。合理分组物理层级:根据物体的重要性和优先级将碰撞检测分组,只对需要的碰撞进行计算,从而减少不必要的碰撞检测计算,提高性能。
启用或禁用Simulated属性:使用Simulated属性可以更高效地启用或禁用
Rigidbody 2D
及其附带的Collider 2D
和Joint 2D
组件与物理模拟的交互。这种方法比单独启用或禁用各个组件更为节省内存和处理器资源。选择合适的碰撞器类型:可以选择多边形碰撞器(Polygon Collider)或盒形碰撞器(Box Collider),以提供更准确的边界框信息,特别是在将2D角色放入3D场景中时,可以使用物理引擎使角色与3D平面发生碰撞。
2、Unity中Collider 2D
的高级使用技巧
在Unity中,Collider 2D
的高级使用技巧包括以下几点:
使用Polygon Collider 2D:对于更复杂的形状,Unity会尝试创建一个既简单又复杂的碰撞器形状。为此,你需要使用Polygon Collider 2D。你可以通过点击编辑器中的“Edit Collider”按钮来调整碰撞器的形状。
添加和移动Box Collider 2D:在构建2D平台游戏时,可以通过在Hierarchy面板中选择Create Empty,然后在新对象上添加Physics 2D -> Box Collider 2D组件来创建碰撞器。此外,还可以通过按住Shift键并使用四向箭头控制来添加不可见的墙壁。
3、Rigidbody 2D
与其他物理组件(如Collider 2D
)结合使用的最佳实践
在Unity中,
Rigidbody 2D
与Collider 2D
结合使用是实现2D物理模拟的关键。以下是一些最佳实践:首先,在你的2D物体上添加
Rigidbody 2D
和Collider 2D
组件。这将为物体赋予基本的物理属性,使其能够受到重力影响、与其他物体碰撞,并实现更真实的物理效果。在
Rigidbody 2D
组件的属性面板中,确保勾选了“Is Kinematic”选项。如果禁用此选项,则物体将受到物理引擎的控制,包括运动和碰撞检测。如果需要对物体施加力或使其移动,建议在
FixedUpdate
方法中调用Rigidbody 2D
组件的方法。这种方法比直接使用Translate
方法更为高效,因为Unity会自动处理刚体引擎方面的细节。使用
Collider 2D
可以检测碰撞,但逐像素检测容易出错。因此,通常推荐使用复合碰撞器(Composite Collider)来简化碰撞检测过程。根据具体需求,可能还需要添加其他物理组件,如关节(Joints)或力( Forces)。这些组件可以帮助模拟复杂的物理交互,例如连接两个刚体或施加特定的力。
4、在Unity中实现复杂物理效果(如水体、火光等)时,如何有效地使用Collider 2D
和Rigidbody 2D
?
在Unity中实现复杂物理效果(如水体、火光等)时,有效地使用Collider 2D
和Rigidbody 2D
需要理解它们的基本功能和相互作用:
理解
Rigidbody 2D
的作用:Rigidbody 2D
组件将对象置于物理引擎的控制之下,使其能够响应重力、质量、抗力和动量等物理属性。这意味着,当你为一个物体添加了Rigidbody 2D
组件时,Unity的物理引擎会计算并模拟该物体在XY平面上的运动,包括旋转和移动。理解
Collider 2D
的作用:Collider 2D
组件定义了物体的碰撞区域,使得Unity的物理引擎可以检测到物体之间的碰撞事件。这意味着,如果你希望两个物体之间发生物理交互,比如碰撞或接触,你需要为它们分别添加Collider 2D
组件。使用
Rigidbody 2D
和Collider 2D
进行物理交互:当一个物体具有Rigidbody 2D
组件时,Unity的物理引擎会根据其位置、质量和所受力等因素计算其运动状态,并通过Collider 2D
组件检测与其他物体的碰撞。例如,在实现水体效果时,你可以为水分子设置Rigidbody 2D
组件,以模拟它们在流体中的运动;同时,使用Collider 2D
来定义水分子的碰撞边界,确保它们不会穿过其他物体。调整物理属性以优化性能:在使用
Rigidbody 2D
和Collider 2D
时,可以通过调整其属性来优化性能。例如,可以启用或禁用物理模拟,以节省资源。此外,还可以调整重力值、摩擦系数等参数,以更真实地模拟物理现象。
5、针对不同类型的碰撞器(Box, Circle, Polygon, Edge),Unity提供了哪些特定的优化或调整建议?
针对不同类型的碰撞器(Box, Circle, Polygon, Edge),Unity提供了以下特定的优化或调整建议:
-
Box Collider:
- 使用盒子形状的碰撞器可以减少计算量,因为它们的形状简单且容易处理。
- 对于简单的形状,Unity会检测碰撞器形状的最优拟合,前提是选择了正确的形状。
-
Circle Collider:
- 圆形碰撞器在与圆形精灵匹配时,可以通过设置其半径来优化性能。
- 建议使用圆形碰撞器以减少复杂度和提高效率。
-
Polygon Collider:
- 多边形碰撞器可以通过插件如Polygon Collider Simplification进行自动优化,以减少碰撞体Shape Count数量,从而提升性能。
- 在某些情况下,禁用额外的Delaunay三角剖分步骤可以提升碰撞器的碰撞性能,但可能会影响范围。
-
Sphere Collider:
- 球体碰撞器在使用时应尽量保持简单,因为复杂的网格会增加CPU开销。
- 在设置球体碰撞器时,可以调整中心和半径以优化性能。
相关文章:

Unity【Colliders碰撞器】和【Rigibody刚体】的应用——小球反弹效果
目录 Collider 2D 定义: 类型: Rigidbody 2D 定义: 属性和行为: 运动控制: 碰撞检测: 结合使用 实用检测 延伸拓展 1、在Unity中优化Collider 2D和Rigidbody 2D的性能 2、Unity中Collider 2D…...

CES 2025:ROG打造极致游戏体验
2025年1月7日晚,备受瞩目的CES 2025 ROG新品发布会在万众期待中拉开帷幕。 作为全球领先的电竞和游戏设备制造商,ROG在此次发布会上隆重推出了多款旗舰级新品,包括旗舰专业电竞本ROG枪神9超竞系列、专业电竞本ROG枪神9系列、旗舰游戏本ROG魔霸…...

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望
一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时,核心架构与制程工艺无疑是最为关键的基础要素,它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…...
Windows 11 上配置VSCode 使用 Git 和 SSH 完整步骤
在 Windows 11 上,通过 VSCode 使用 Git 和 SSH 克隆 GitHub 仓库的完整优化步骤如下: 1. 安装必备工具 下载并安装 Git: 访问 Git 官网 下载最新版本。安装时,选择以下选项: Default editor for Git: Use Visual Stud…...

[读书日志]从零开始学习Chisel 第二篇:Scala的变量与函数(敏捷硬件开发语言Chisel与数字系统设计)
第一篇https://blog.csdn.net/m0_74021449/article/details/144887921 2.2 Scala的变量及函数 2.2.1变量定义与基本类型 变量声明 变量首次定义必须使用关键字var或者val,二者的区别是val修饰的变量禁止被重新赋值,它是一个只读的变量。首次定义变量时…...

Unity:删除注册表内的项目记录
然后WinR按键输入regedit 打开注册表 在注册表 HKEY CURRENT USER—>SOFTWARE—>Unity—>UnityEditor—>DefaultCompany —>language_Test 中,删除我们的之前存储的语言环境数据。在 “ 三、文本调用和替换 ” 测试时已经将语言环境存储到注册表中了…...
【记录】东南大学研究生24-25秋季 学位英语考试
上午刚考完学位英语,感觉一般,反正就是能过,但是也不是考的特别好,在备考的过程中的一些资料也感谢很多人的分享,我这边也把24年的期末说明放一份吧 其他ppt和资料github一个大佬整理了,在这里 然后也留下…...

LabVIEW四边形阻抗继电器
基于LabVIEW开发了四边形阻抗继电器,该系统主要应用于电力系统的距离保护中。四边形阻抗继电器在克服短路点过渡电阻的影响及躲避负荷阻抗方面展现出优良的特性。通过LabVIEW图形化编程环境实现的该系统,具备用户友好界面和简便的操作流程,有…...
计算机网络(第8版)第3章课后习题--透明传输
【3-11】 试分别讨论以下各种情况在什么条件下是透明传输,在什么条件下不是透明传 输。(提示:请弄清什么是“透明传输”,然后考虑能否满足其条件。) (1)普通的电话通信。 (2)互联网提供的电子邮件服务。 解 答 : 透明传输是指在数据传输…...
极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现
极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现 目录 极限学习机 (Extreme Learning Machine, ELM) 算法详解与PyTorch实现1. 极限学习机 (ELM) 算法概述1.1 单隐层前馈神经网络1.2 ELM的优势2. ELM的核心技术2.1 模型定义2.2 随机初始化2.3 最小二乘法2.4…...

Hbuilder ios 离线打包sdk版本4.36,HbuilderX 4.36生成打包资源 问题记录
1、打包文档地址https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#%E9%85%8D%E7%BD%AE%E5%BA%94%E7%94%A8%E7%89%88%E6%9C%AC%E5%8F%B7 2、配置应用图标 如果没有appicon文件,此时找到 Assets.xcassets 或者 Images.xcassets(看你sdk引入的启动文件中…...

实验四 数组和函数
实验名称 实验四 数组和函数 实验目的 (1)掌握一维、二维数组以及字符数组的定义、元素引用和编程方法。 (2)掌握字符串常用程序的设计方法。 (3)掌握函数定义和调用的方法,以及函数参数传…...
基于安卓14 的ANR dump信息原理
首先以 service 处理超时逻辑来分析 1)service timeout调用到anr 的逻辑: /frameworks/base/services/core/java/com/android/server/am/ActiveServices.java 5827 void scheduleServiceTimeoutLocked(ProcessRecord proc) { 5828 if (…...
C++ volatile(八股总结)
答:跟编译器优化有关,告诉编译器每次操作该变量时一定要从内存中真正取出,而不是使用已经存在寄存器中的备份。 volatile是一个类型限定符,用来告诉编译器,某个变量的值可能在任何时刻发生变化,因此&#…...

SQL从入门到实战
学前须知 sqlzoo数据介绍 world nobel covid ge game、goal、eteam teacher、dept movie、casting、actor 基础语句 select&from SELECT from WORLD Tutorial - SQLZoo 基础查询select单列&多列&所有列&别名应用 例题一 SELECT name, continent, population …...

Redis源码阅读-源码阅读方式
Redis源码下载 首先通过地址(https://github.com/redis/redis)下载redis的源码。redis的源码版本,这里可以选择合适的查看,这里选择的是redis 5.x版本的源码。 Redis源码查看方式 这里可以选择合适的C开发工具,打开…...
若依框架简介
若依(RuoYi)框架是一个基于Java语言的后台管理系统快速开发框架,它结合了多种前端和后端技术,提供了高效的开发工具。以下是对若依框架的详细解析: 一、技术架构 后端:若依框架后端采用了Spring Boot、My…...
MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分
MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分 目录 MOE怎样划分不同专家:K-Means聚类算法来实现将神经元特征聚类划分MOE划分不同专家的方法K-Means聚类算法来实现将神经元特征聚类划分成不同专家(行或者列聚类)举例说明怎么聚类,最后神经网络怎么保存M…...

为 CentOS7 虚拟机添加第二块网卡
为 CentOS7 虚拟机添加第二块网卡 目录 为 CentOS7 虚拟机添加第二块网卡一、在虚拟中添加网卡二、网卡配置1、查看新增的网卡信息2、创建网卡配置文件 一、在虚拟中添加网卡 1、右击虚拟机,在弹出的菜单中选择【设置】,弹出如下图所示的【虚拟机设置】…...

30天开发操作系统 第 12 天 -- 定时器
前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…...
雷达的分类
雷达是一种利用电磁波进行探测和定位的设备,其分类方式多种多样,以下是按照不同标准对雷达进行的分类: 一、按功能分类 警戒雷达:用于搜索、监视和识别空中、海面或地面的目标,为防御系统提供早期预警。引导雷达&…...
Ubuntu桌面管理环境: GDM3,KDM,LightDM
介绍 Ubuntu是一个广受欢迎的Linux操作系统,拥有强大而多样化的桌面管理环境。其中三个常用的桌面管理环境是GDM3,KDM和LightDM。本篇博客将介绍这三个桌面管理环境的特点和功能。 GDM3 (GNOME Display Manager) GDM3是默认的桌面管理环境,…...
使用Llama 3.1创建合成数据集以调优你的大型语言模型
使用Llama 3.1创建合成数据集以调优你的大型语言模型 在数据驱动的人工智能领域,数据是核心资产。开发高质量数据集既复杂又昂贵,因此很多实验室和开发者选择使用合成数据集。本文将介绍如何利用大型语言模型Llama 3.1 405B创建合成数据集,并…...
js可不使用document直接根据id获取id元素
今天在用原生js写demo的时候发现一个有意思的小现象,那就是可以直接根据元素的id去获取对应的元素。 起先是我定义了四个btn,每个btn都是根据getElementById来获取元素,然后给元素绑定事件,在调试的时候都挺好,到了后…...

【竞技宝】CS2:HLTV2024职业选手排名TOP8-broky
北京时间2025年1月7日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP8为FAZE战队的broky。 选手简介 broky是一位来自拉脱维亚的职业CS选手,现年23岁。2018年7月,broky获得了FPL资格,连续几季在榜上前5。他的首次赛场留名是跟随拉脱维亚本土战队Wolsung出征BES…...

Apache Paimon-实时数据湖
一、Apache Paimon是什么? Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。 …...
hpm使用笔记————使用usb作为从机接收来自上位机的数据然后通过spi主机发送给spi从机
历程整合 环境要求任务需求任务实现代码实现任务测试功能测试 结束 环境 hpm_sdk v 1.7.0ses v8.10 要求 例程demo USB-CDC 作为从机接收,然后把接收到的数据转发给SPI,SPI传输出去 任务需求 USB使用cherry协议栈进行开发 作为device设备(…...

数据结构(查找算法)
1. 查找的概念 在一堆数据中,找到我们想要的那个数据,就是查找,也称为搜索,很容易想到,查找算法的优劣,取决于两个因素: 数据本身存储的特点查找算法本身的特点 比如,如果数据存储…...

private前端常见算法
1.数组 合并两个有序数组(简单-5) https://leetcode.cn/problems/merge-sorted-array/description/?envTypestudy-plan-v2&envIdtop-interview-150 移除元素(简单-4) https://leetcode.cn/problems/remove-element/descr…...
Go语言之十条命令(The Ten Commands of Go Language)
Go语言之十条命令 Go语言简介 Go语言(又称Golang)是由Google开发的一种开源编程语言,首次公开发布于2009年。Go语言旨在提供简洁、高效、可靠的软件开发解决方案,特别强调并发编程和系统编程。 Go语言的基本特征 静态强类…...