[Unity学习教程] Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider

[复制链接]
查看1098 | 回复0 | 2023-8-23 11:55:02 | 显示全部楼层 |阅读模式 来自 中国北京

 
1.RigidBody(刚体)的作用是让物体具有物理特性(比如说重力,摩檫力等等)
2.假如想让物体可以或许与别的物体发生碰撞的话,我们还须要一个组件 --- Colider碰撞器组件
1.上图就是Unity中提供的已经预备好的各种形状的碰撞器组件
2.形成差别形状的碰撞器所需的面数差别,面数越少模仿碰撞时的性能消耗越少,一样平常在3d场景中为了节流性能,我们都是选择Box(立方体)碰撞器
1.center是碰撞器的中心点坐标,而size则是碰撞器的大小设置 --- 对于box colider来说,size三个值分别对应的是长x宽z高y
2.假如不想通过数值来调控碰撞器的形状位置和大小的话,也可以点击Edit Colider直接在场景中调治碰撞器的位置和形状
1.除了用设定好的形状来作为碰撞器之外,Unity还提供了一个具有“自适应”功能的碰撞器 --- Mesh Collider
2.传给该碰撞器物体的材质以及物体对应的模子的网格后,该碰撞器就会主动生成一个贴合物体模子的碰撞框

1.上面这个就是物体对应的模子的网格
2.该碰撞器组件挂在谁人物体上就会主动获取该物体对应的模子的网格赋值给组件中的Mesh(固然也可以举行更改)
3.用了这个组件后可以或许到达最好的碰撞模仿结果,但是!代价是这种方式会非常消耗性能
1.convex --- adj.突出的
2.有没有一种方法即可以或许得到较好的碰撞结果,同时也能拥有较好的性能呢?
答案是有的:将Mesh Colider 中的Convex(尖锐的)选上即可 --- 选上后碰撞框的生成会发生改变 ---起首依然是根据物体对应的模子的面生成贴合的碰撞框,然后按照一定规律将面上的点连起来得到一个简化后尖锐突起的碰撞框
碰撞框在颠末尖锐处理后我们就可以或许得到其简化版 --- 这个简化版的碰撞框牺牲了一定的碰撞结果,但却得到了较大的性能提拔(而且牺牲后的碰撞结果依然在可接受的范围内)
2.使用了Mesh collider 而没有选择Convex的话,Unity是不会去模仿碰撞结果的(Untiy内部的规定)假如直接上,没用Convex,那就会导致碰撞框的检测面过多,使得碰撞结果的模仿非常耗性能 --- 使用了Convex后就可以或许恰当减少碰撞框的面数 --- 进而使得我们在保证一定碰撞结果的同时得到较好的性能。
3.一样平常Mesh Collider碰撞框都是末了的一个选择 --- 固然结果很好,但是着实是太吃性能了

刚体和碰撞器的相关属性值先容


1.mass -- 质量 --- 下面有质量的取值范围
假如场景中只有一个游戏物体的话,质量为多少都无所谓,但是当场景中具有多个游戏物体时,我们就须要根据现真相况给每一个游戏物体设置质量了 --- 究竟你不大概让石头和羽毛一样重吧
2.第二个属性drag 表示的是阻力(damping --- 衰减)--- 这个阻力指的是空气阻力
下面这张图中有设置空气阻力属性的参考值

 
 1.设置插值可以或许缓解刚体活动时产生的抖动,而插值的设置又分为两种情势 --- 内插值与外插值 --- 内外插值的区别就是 --- 各自是通过差别的方式来缓解刚体活动的抖动
 1.碰撞检测的模式由上往下 --- 检测的频率越来越大,性能的消耗也越来越大
 1.这个束缚只会在刚体之间发生碰撞时触发
1.关闭Use Gravity后物体不受重力影响,但还是具有别的的物理-特性哦! 
2.刚体组件与碰撞器组件一样平常都是成对出现的,因为游戏物体与别的游戏物体互动并模仿出对应的物理结果的流程是:
a.先通过碰撞器组件举行碰撞检测 --- 将检测结果发给刚体组件 --- 刚体组件通过检测结果模仿出对应的物理结果
也就是说 --- 假如没有碰撞器组件只有刚体组件的话,游戏物体任然具有物理特性,但是无法举行碰撞检测,只会穿过别的游戏物体而不会产生互动
3.带了刚体组件的游戏物体的物理结果模仿并不是随时都在举行的,在物体静止时算法会关闭该物体的刚体组件,只有在物体活动时开启该物体的刚体组件来举行物理结果盘算 --- 通过这种方式来节流游戏性能
4.只有碰撞器组件在工作的游戏物体相打仗时只会返回碰撞结果,然后相互穿过(没有刚体组件工作来模仿物理结果的结果)
1.假如勾选了Is Kinematic的话,可以或许实现的结果就是 --- 游戏物体没有了物理特性,但是依然具有刚体特性 --- 即与别的具有刚体组件的游戏物体相撞举行碰撞检测后,别的游戏物体模仿物理结果,受到力的作用可以或许被撞开而不是穿过,且物体自身不受任何力的影响,不发生移动
2.刚体组件可以或许实现两个功能 --- a.使得物体具有“实体”而不会如幽灵一样平常穿过别人或者被穿过
b.使得物体具有物理特性(指物体受到的各种力,通过物理引擎模仿实现) 
3.碰撞框 --- 刚体组件内部逻辑:
a.一个物体a活动 --- 刚体组件中是否开启Is Kinematic --- 若开启则无物理特性(不受力的作用)只是具有实体 --- 若没开启,则具有物理特性,受到力的作用,物理引擎开始模仿物理结果
b.活动过程中与别的游戏物体b(b静止)发生碰撞 --- 起首b有没有碰撞框(collider),若没有无碰撞检测,试为火线没举行碰撞,穿过之 --- 若有则举行碰撞检测,并将结果返回给刚体组件 ---
若刚体组件有物理特性则开始模仿物理结果,反之则是继续去挤物体b但是穿不已往


来源:https://blog.csdn.net/qq_51947882/article/details/130033729
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则