Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider

这篇具有很好参考价值的文章主要介绍了Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

unity加了刚体和碰撞没用,unity,unity,游戏引擎

 unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.RigidBody(刚体)的作用是让物体具有物理特性(比如说重力,摩檫力等等)

2.如果想让物体能够与其它物体发生碰撞的话,我们还需要一个组件 --- Colider碰撞器组件unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.上图就是Unity中提供的已经准备好的各种形状的碰撞器组件

2.形成不同形状的碰撞器所需的面数不同,面数越少模拟碰撞时的性能消耗越少,一般在3d场景中为了节省性能,我们都是选择Box(立方体)碰撞器unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.center是碰撞器的中心点坐标,而size则是碰撞器的大小设置 --- 对于box colider来说,size三个值分别对应的是长x宽z高y

2.如果不想通过数值来调控碰撞器的形状位置和大小的话,也可以点击Edit Colider直接在场景中调节碰撞器的位置和形状unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.除了用设定好的形状来作为碰撞器之外,Unity还提供了一个具有“自适应”功能的碰撞器 --- Mesh Collider

2.传给该碰撞器物体的材质以及物体对应的模型的网格后,该碰撞器就会自动生成一个贴合物体模型的碰撞框

unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.上面这个就是物体对应的模型的网格

2.该碰撞器组件挂在那个物体上就会自动获取该物体对应的模型的网格赋值给组件中的Mesh(当然也可以进行更改)

3.用了这个组件后能够达到最好的碰撞模拟效果,但是!代价是这种方式会十分消耗性能unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.convex --- adj.突出的

2.有没有一种方法即能够获得较好的碰撞效果,同时也能拥有较好的性能呢?

答案是有的:将Mesh Colider 中的Convex(尖锐的)选上即可 --- 选上后碰撞框的生成会发生改变 ---首先依然是根据物体对应的模型的面生成贴合的碰撞框,然后按照一定规律将面上的点连起来获得一个简化后尖锐突起的碰撞框unity加了刚体和碰撞没用,unity,unity,游戏引擎

碰撞框在经过尖锐处理后我们就能够获得其简化版 --- 这个简化版的碰撞框牺牲了一定的碰撞效果,但却获得了较大的性能提升(而且牺牲后的碰撞效果依然在可接受的范围内)

2.使用了Mesh collider 而没有选择Convex的话,Unity是不会去模拟碰撞效果的(Untiy内部的规定)如果直接上,没用Convex,那就会导致碰撞框的检测面过多,使得碰撞效果的模拟非常耗性能 --- 使用了Convex后就能够适当减少碰撞框的面数 --- 进而使得我们在保证一定碰撞效果的同时获得较好的性能。

3.一般Mesh Collider碰撞框都是最后的一个选择 --- 虽然效果很好,但是实在是太吃性能了


刚体和碰撞器的相关属性值介绍

unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.mass -- 质量 --- 下面有质量的取值范围unity加了刚体和碰撞没用,unity,unity,游戏引擎

如果场景中只有一个游戏物体的话,质量为多少都无所谓,但是当场景中具有多个游戏物体时,我们就需要根据实际情况给每一个游戏物体设置质量了 --- 毕竟你不可能让石头和羽毛一样重吧unity加了刚体和碰撞没用,unity,unity,游戏引擎

2.第二个属性drag 表示的是阻力(damping --- 衰减)--- 这个阻力指的是空气阻力

下面这张图中有设置空气阻力属性的参考值

unity加了刚体和碰撞没用,unity,unity,游戏引擎

 unity加了刚体和碰撞没用,unity,unity,游戏引擎

 1.设置插值能够缓解刚体运动时产生的抖动,而插值的设置又分为两种形式 --- 内插值与外插值 --- 内外插值的区别就是 --- 各自是通过不同的方式来缓解刚体运动的抖动unity加了刚体和碰撞没用,unity,unity,游戏引擎

 1.碰撞检测的模式由上往下 --- 检测的频率越来越大,性能的消耗也越来越大unity加了刚体和碰撞没用,unity,unity,游戏引擎

 1.这个约束只会在刚体之间发生碰撞时触发unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.关闭Use Gravity后物体不受重力影响,但还是具有其它的物理-特性哦! 

2.刚体组件与碰撞器组件一般都是成对出现的,因为游戏物体与其它游戏物体互动并模拟出对应的物理效果的流程是:

a.先通过碰撞器组件进行碰撞检测 --- 将检测结果发给刚体组件 --- 刚体组件通过检测结果模拟出对应的物理效果

也就是说 --- 如果没有碰撞器组件只有刚体组件的话,游戏物体任然具有物理特性,但是无法进行碰撞检测,只会穿过其它游戏物体而不会产生互动

3.带了刚体组件的游戏物体的物理效果模拟并不是随时都在进行的,在物体静止时算法会关闭该物体的刚体组件,只有在物体运动时开启该物体的刚体组件来进行物理效果计算 --- 通过这种方式来节省游戏性能

4.只有碰撞器组件在工作的游戏物体相接触时只会返回碰撞结果,然后互相穿过(没有刚体组件工作来模拟物理效果的结果)unity加了刚体和碰撞没用,unity,unity,游戏引擎

1.如果勾选了Is Kinematic的话,能够实现的效果就是 --- 游戏物体没有了物理特性,但是依然具有刚体特性 --- 即与其它具有刚体组件的游戏物体相撞进行碰撞检测后,其它游戏物体模拟物理效果,受到力的作用能够被撞开而不是穿过,且物体自身不受任何力的影响,不发生移动

2.刚体组件能够实现两个功能 --- a.使得物体具有“实体”而不会如幽灵一般穿过别人或者被穿过

b.使得物体具有物理特性(指物体受到的各种力,通过物理引擎模拟实现) 

3.碰撞框 --- 刚体组件内部逻辑:

a.一个物体a运动 --- 刚体组件中是否开启Is Kinematic --- 若开启则无物理特性(不受力的作用)只是具有实体 --- 若没开启,则具有物理特性,受到力的作用,物理引擎开始模拟物理效果

b.运动过程中与其它游戏物体b(b静止)发生碰撞 --- 首先b有没有碰撞框(collider),若没有无碰撞检测,试为前方没进行碰撞,穿过之 --- 若有则进行碰撞检测,并将结果返回给刚体组件 ---

若刚体组件有物理特性则开始模拟物理效果,反之则是继续去挤物体b但是穿不过去文章来源地址https://www.toymoban.com/news/detail-573703.html

到了这里,关于Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity --- 物理引擎 --- 触发器 与 碰撞器详解

    对第一个条件进行补充 --- 不仅要两者都具有碰撞组件,同时还需要两者的碰撞组件中都没有勾选 Is Trigger属性  1.上一篇文章中说了那么多,其实也可以总结为两个碰撞条件 --- a.两个游戏物体都具有碰撞器组件 ,如果没有的话,连碰撞检测都不会发生,也就没有所谓的碰不

    2024年02月07日
    浏览(34)
  • DOTS Unity.Physics物理引擎碰撞查询核心分析

      最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞查询以及核心相关概念。 Unity.Physics碰撞查询概述   碰撞查询(Collison Qurey)是Unity.Physics物理引擎中的一个很重要的功能。很多游戏逻辑都需

    2024年04月25日
    浏览(38)
  • Unity 关于Rigidbody刚体组件的理解

    一、基本了解 刚体Rigidbody因具体物理相关的属性,使得实际应用中更有真实感。应用也多: Rigidbody它可以受到重力、碰撞或者力的作用,所以我们可以用它模拟物体的真实物理行为,如受到重力的作用、与其他刚体对象进行碰撞,并模拟物体的运动和旋转。 一个带有刚体

    2024年02月03日
    浏览(29)
  • 第二十五章 Unity 刚体Rigidbody

    在物理学中,静止和匀速直线运动是物体的平衡状态,如果给该物体施加某一个力的话,物体的平衡状态就会改变,当然这个真理的前提是理想状态。我们知道在现实世界中,由于重力和摩擦力的存在,任何一个物体都不可能永无止境的运动下去。因此,要想让物体保持运动

    2024年02月06日
    浏览(47)
  • Unity刚体之碰撞接触

    1.想要让程序判断两个物体又接触,则两个物体都必须要有Collider,并且运动的物体必须要有刚体,才会发生碰撞。如果运动的物体没有刚体,也视为没有碰撞。 2 .Collision碰撞 : 会发生物理碰撞, 双方都有碰撞体(Collider ), 至少有一个物体有rigidbody ,会触发OnCollision事件。

    2024年02月16日
    浏览(26)
  • 详解Unity中的刚体和碰撞体组件

    Unity 中内置了一套完成的物理引擎,能够完成现实世界的近似模拟。而在 Unity 物理引擎中,刚体组件和碰撞体组件则是无法避开的,刚体组件是让物体产生物理行为的组件,而碰撞体组件则是让刚体与物体产生碰撞的组件,今天就来简要认识一下这种组件吧。 前排提醒:本

    2023年04月08日
    浏览(35)
  • Unity日记18(刚体、获取碰撞物的信息、铰链、弹簧)

    目录 刚体 刚体 重力 isKinematic 碰撞检测 变换限制 ​编辑 碰撞  获取到碰撞物的实体,输出它的某个信息。  碰撞和触发器的区别 铰链 锚点和轴 弹簧组件 固定关节组件 定制摩擦力面 添加了好像不能禁用。 重力,顾名思义。 禁用重力,不受重力影响。当有物体撞击,猜测

    2024年02月07日
    浏览(32)
  • unity碰撞检测识别对象的几种方法,刚体篇

    可以在物体的Collider组件中设置碰撞层级,只有属于指定层级的物体才会响应碰撞事件。例如,我们可以将敌人设置为一个单独的层级,然后在玩家的脚本中检测碰撞时,只响应属于敌人层级的物体。 可以在物体的Collider组件中设置标签,然后在脚本中检测碰撞时,只响应标

    2024年02月11日
    浏览(26)
  • Unity设置了刚体和碰撞体却仍旧会穿墙的原因

            自己在做2D游戏练习的时候,发现给僵尸设置了碰撞体和刚体,它却仍然可以穿墙来追我的主角,简直太可怕了,然后我就开始网上找各种可能情况。          首先看了一眼Edit--projectSetting--Physics中有没有勾选他俩的碰撞。          发现不是这个的原因,就又

    2024年02月11日
    浏览(39)
  • unity物理碰撞操作方案

    经unity官方网站资料改写整理书写本博客,原网址方案链接如下: Lesson 2.4 - Collision Decisions - Unity Learn 首先  1.先创建两个物体  然后   2.给这两个物体加上Box Collider 组件,并勾选“是触发器”(英文:is 啥啥的) 注意两个都要添加这组件,并且进行相同的操作,都要勾选“

    2024年02月08日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包