本文节选自洪流学堂公众号专栏《郑洪智的Unity2018课》,未经允许不可转载。

洪流学堂公众号回复专栏,查看更多专栏文章。


洪流学堂,让你快人几步。你好,我是郑洪智。

从这节课开始,我会尝试用一种新的写作风格,也希望大家能够多提意见。

背景补充

小新今年数学专业马上大三了,却一直没有找到自己的职业方向,不知道以后要干什么,唯一的爱好就是玩游戏,特别想自己能开发一款成功的游戏。小新趁着暑假去找各种实习兼职,一个偶然的机会收到了一个游戏公司的面试通知。小新欣喜若狂,前去面试,聊到游戏时,小新能滔滔不绝聊出很多东西,但是问到开发游戏的时候,却哑口无言,无法回答面试官的问题。面试官问了很多游戏开发、Unity引擎的问题,小新就下定决心,一定要好好学习一下游戏开发,特别是Unity引擎。小新找到了自己的师兄大智,这位师兄有8年Unity开发经验,想向师兄请教一下学习的方向。没想到师兄特别热情,是一个技术布道者,喜欢研究传播技术,从此小新跟着大智开启了他的Unity学习之旅。

大智告诉小新,叫我“大智”就好了,以后不要叫师兄了哈。

Rigidbody 刚体

“大智,昨天我学习了物理系统,知道了碰撞体,那物理系统里面还有别的东西么?”
“你呀,太天真了,Collider只是物理系统的一部分。你看昨天学的Collider,他们都只是一个静态的碰撞体。我们昨天学习过物理系统很重要的是模拟物体的受力情况,物体根据物理规则运动呀。”
“那通过代码修改物体的位置不就能运动起来了么?”
“通过代码直接修改物体的位置并没有通过受力的方式改变物体,所以这种方式并没有应用到物理系统,要想让物体通过受力运动,我们首先要了解一下Rigidbody组件。物体只有添加了Rigidbody组件,才会对受力作出反应。小新,你现在先去看看Unity的文档,看看Rigidbody组件到底是什么吧!”
“收到,我马上就去看!”

小新马上打开Unity文档,找到了Rigidbody的介绍文档https://docs.unity3d.com/Manual/RigidbodiesOverview.html。

Rigidbody组件可以让一个物体受到物理影响。比如添加Rigidbody组建后,物体会立马对重力作出反应。如果物体上还添加了Collider,物体在受到碰撞时也会移动。

“大智,我知道了!Rigidbody可以让物体对受力做出反应,但是我有点和Collider搞不清楚了。”
“这两个是初学者不太容易搞清楚的概念。Collider只是给物体加上了碰撞,让物体拥有了实体,而不是一个可以穿过去‘全息投影’。而Rigidbody是让物体拥有了动态受力的功能。所以我们一般称只有Collider没有Rigidbody的物体叫静态Collider。一般刚体物体上也会有Collider,因为需要和别的物体发生碰撞。如果没有Collider,即使刚体也不会和其他物体碰撞。”
“那是不是不应该给场景里所有的物体添加Rigidbody组件?”
“非常对,场景里有一些物体是基本不会动的,比如说一栋大楼,一块大石头等等,他们只需要阻挡别的物体别穿过他们就行了,所以它们只需要添加Collider就行。因为添加了Rigidbody组件后会带来很多的物理计算,所以只需要给会移动的物体添加Rigidbody就行。
“我明白了!我说呢怎么给所有物体添加了Rigidbody后卡的跑不起来呢,我去把我的吃鸡场景重新设置一下,嘿嘿!”
“你呀你呀,真是个急性子!顺便好好看一下刚体组件的各个参数!”
“知道啦!”

Rigidbody组件

小新认真看了Rigidbody组件的文档,并做了笔记:

  • Mass 刚体的质量,单位是千克(kg)
  • Drag 空气阻力,0代表没有空气阻力,无限大的值代表物体会立即停下来(惯性消失)。
  • Angular Drag 物体受到一个扭力旋转时的阻力,0代表没有阻力,但是需要注意的是无限大的值并不能让物体立即停止旋转。
  • Use Gravity 是否受重力影响
  • Is Kinematic 选中时,物体不会受到物理物理引擎的影响,只能通过修改Transform移动物体。
  • Interpolate 插值,如果发现刚体移动有卡顿,可以尝试选择此选项。
    • None 不使用插值
    • Interpolate 根据上一帧的Transform进行平滑
    • Extrapolate 根据估算的下一帧的Transform进行平滑
  • Collision Detection 碰撞检测的方式,当你的刚体快速运动时,可能会出现穿透的现象,可以设置这个选项。
    • Discrete 离散检测,性能较高,默认值
    • Continuous 连续检测。使用此选项时,物体与其他动态Collider(刚体)使用离散检测;与其他静态Collider使用连续检测。如果其他刚体设置为了Continuous Dynamic,会使用连续检测和这个刚体进行碰撞检测。这个选项非常影响性能,如果没有快速运动物体的碰撞检测问题,保持Discrete设置
  • Continuous Dynamic 动态连续检测。如果其他物体是Continuous或Continuous Dynamic,与这个物体碰撞时会使用连续检测。也会和静态Collider使用连续检测。对于其他的collider(标记为Discrete的Rigidbody)使用离散检测。。用于快速移动的物体。
  • Constraints 约束刚体的运动
    • Freeze Position 选中后刚体不会在对应的轴上移动
  • Freeze Rotation 选中后刚体不会在对应的轴上旋转

小新看完之后,还是有一些地方不太清楚,又来骚扰大智。
“大智,刚体的Is Kinematic我明白了是什么,这个有什么用呢?加上刚体不就是为了受力么,为什么还要提供一个这个属性,关掉受力呢?”
“有些情况,我们不想让物体受力,但是仍然能够和其他物体发生碰撞,影响其他物体。比如这个物体上有动画,在播放动画的时候,我们想让动画来控制物体的位置。”
“明白了,但是感觉还是需要用到的时候再去理解。那这个Collision Detection该什么时候设置呢?是不是类似子弹这种情况?”
“说的很对,Collision Detection就是针对快速移动的小物体,比如说子弹,但是通常游戏射击并不用实体的子弹,因为子弹多的时候性能太差了,我可以给你推荐一个文章来看看:https://zhuanlan.zhihu.com/p/22105641”
“谢谢智哥,我也发现了用刚体的话性能太差了,我去看看”

碰撞汇总

“大智,我发现有些情况两个物体发生了碰撞,但是并没有调用脚本中的代码,这是怎么回事?”
“哈哈,这时候我就要祭出大招了,给你两个表格,对照着看看是否会发生碰撞哈。”

“太好了,有了这两个表格,能不能获取到消息就很清晰了!”

总结

“我来简单总结一下,今天这个Rigidbody组件是物理系统中非常重要的组件,运动的物体都靠它,遇到问题多去查Unity的文档,里面解释的很清楚。”
“好,我已经掌握的差不多了,下一步就是在我的吃鸡游戏里运用一下,嘿嘿”

今日思考题

“既然你说到了运用,我要给你布置一个小作业,用代码控制一个刚体在不平整的地形上运动,试试看!”
“收到!我去也!”
“收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”

洪流学堂公众号回复专栏,查看更多专栏文章。



《郑洪智的Unity2018课》,倾尽我8年的开发经验,结合最新的Unity2018,带你从入门到精通。

[专栏精选]Unity刚体详解相关推荐

  1. Unity——RectTransform详解

    Unity--RectTransform详解 目录 1.Anchor(Min,Max) 2.绝对与相对布局 3.Pivot 4.Offset(Min,Max) 5.SizeDelta 6.rect 7 ...

  2. Unity 灯光系统详解

    Unity 灯光系统详解 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人! (拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享. ...

  3. 计算机术语中Cache代表缓存,2012年3月计算机一级MsOffice选择题精选及答案详解(第六套)...

    1.下列两个二进制数进行算术运算,10000 - 101 = ______. A.1101 B.101 C.01011 D.100 答案:( ) 评析: 二进制数算术减运算的运算规则是0-0=0,0- ...

  4. Unity快捷键详解

    Unity快捷键详解 -- -- 目录: 一:常用快捷键 二:快捷键(官方文档) 三:快捷键查看及相关操作(编辑器) 四:全局快捷键和上下文快捷键 -- -- 一:常用快捷键 补充:Ctrl+Shif ...

  5. [专栏精选]Unity中动态构建NavMesh

    本文节选自洪流学堂公众号专栏<郑洪智的Unity2018课>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 小新:"Unity内置的Navigation系统是不 ...

  6. [专栏精选]Unity动画系统的IK详解

    本文节选自洪流学堂公众号专栏<郑洪智的Unity2018课>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. "大智,昨天你说要给我讲讲IK,趁现在有空,你给我讲 ...

  7. [专栏精选]Unity中编码Encoding脱坑指南

    本文节选自洪流学堂公众号技术专栏<大话Unity2018>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 洪流学堂,让你快人几步.你好,我是郑洪智. 大智:"昨 ...

  8. [专栏精选]Unity动画系统的RootMotion

    洪流学堂,让你快人几步.你好,我是郑洪智. 洪流学堂公众号回复专栏,查看更多专栏文章. "智哥,自从用了混合树来做人物移动,腰不酸腿不疼,思路更清晰了,一口气能写12小时代码!" ...

  9. [专栏精选]Unity中的Git最佳实践

    本文节选自洪流学堂公众号技术专栏<大话Unity2018>,未经允许不可转载. 洪流学堂公众号回复专栏,查看更多专栏文章. 小新:"我昨天尝试了一下使用Git来管理Unity项目 ...

最新文章

  1. centos8更换yum源_基于yum进行linux系统升级--从Centos7升级到Centos8
  2. add1顶部菜单html,add1.html
  3. Android 安全专项-Xposed 劫持用户名密码实践
  4. Salt Master外部Job Cache配置
  5. sklearn API 文档
  6. SAP UI5 Web Component的React表格控件用法
  7. USACO Training Section 1.1 Your Ride Is Here
  8. middlegenidenbsp;nbsp;eclipsenbsp;的插件
  9. (翻译)Google Guava Cache
  10. 读Java并发编程实践记录_原子性_锁_同步容器详解_任务执行
  11. iPhone 12包装盒设计曝光,没充电器没耳机实锤?
  12. 小米手表外观官宣:方表盘+黑银两色
  13. MySql Connector-Java下载
  14. 解决VS在高DPI下设计出的Winform程序界面变形问题
  15. NYOJ477 - A+B Problem III
  16. Baidu 人脸识别FireFly 与PC连接调试
  17. arm linux 看库的依赖,Linux命令查看X86平台 ARM平台上可执行文件与库的依赖关系...
  18. 基于Arduino和Mixly(超声波+蜂鸣器)实现距离报警
  19. LaTeX IEEE 模板 图片引用编号为大写罗马数字问题
  20. mysql 时间毫秒值_MySQL存储毫秒数据的方法

热门文章

  1. UBB代码相关内容的收藏
  2. 加了定位后div不显示了_FANUC主轴定位(M19)后诊断参数445不显示怎么办?
  3. thymeleaf的能用在什么地方_上古文明真相研究系列:天圆地方和南辕北辙
  4. tipask二次开发总结_二次开发自我总结
  5. 抓人眼球!插画风精美的网站首页设计欣赏
  6. 设计灵感图片,到哪里搜索!看这里!
  7. 配色方案没有头绪?看看给你灵感的专业指导
  8. 电商设计师需要的产品广告促销打折标签
  9. C4d模型--电商广告海报三维模型
  10. C++ protected 一种使用场景