分类:Unity、C#、VS2015

创建日期:2016-05-02

一、简介

Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力,使游戏对象像在真实世界中那样进行运动。

任何游戏对象,只有对其添加了刚体组件,该对象才能受重力的影响。

通过脚本为游戏对象添加的作用力,以及通过NVIDlA物理引擎与其他的游戏对象发生互动的运算,都需要为游戏对象添加刚体组件。

二、如何为对象添加刚体

在Unity 5.x中为某个游戏对象添加刚体组件的办法是:选中要添加刚体的游戏对象-->【Component】-->【Physics】-->【Rigidbody】,这样就为该对象添加了刚体。

添加刚体和碰撞体后,选择该对象,就会看到其周围被一层绿色的框线包围:

添加刚体和碰撞体的目的主要用于将该对象和其他对象之间进行碰撞检测。碰撞体既可以用胶囊体来实现,也可以用其他碰撞体组件来实现。

三、相关属性

与刚体相关的属性如下。

1、Mass (质量)

对象的质量(任意单位)。不应使质量比其他刚体 (Rigidbody) 的质量大或小100 倍。

2、Drag (阻力)

在由于施加力而移动时空气阻力对对象的影响程度。0 表示无空气阻力,空气阻力为无穷大将会使对象立即停止移动。

3、Angular Drag (角阻力)

对某个对象施加扭矩而导致该对象旋转时,空气阻力对该对象的影响程度。0 表示无空气阻力。注意:不能仅仅通过将其“角阻力”(Angular Drag) 设置为无穷大使对象停止旋转。

4、Use Gravity (是否使用重力)

如果启用,则对象将受重力影响。

5、Is Kinematic (是否开启运动学)

如果启用,则该对象不会由物理引擎驱动,而是只能通过对其施加变换 (Transform)进行处理。对于手机等移动平台,或者对附加了铰链关节 (HingeJoint) 的刚体 (Rigidbody) 进行动画处理时,为对象开启运动学十分有用。

6、Interpolate (插值处理)

该项用于控制刚体运动的抖动情况。仅当在刚体 (Rigidbody) 移动中发现不平稳时,才尝试下面这些选项之一:

None:不应用插值。

Interpolate:内插。变换(Transform) 基于上一帧的变换 (Transform) 进行平滑处理。

Extrapolate:外插。变换 (Transform) 基于下一帧的估计变换 (Transform) 进行平滑处理。

7、Collision Detection (碰撞检测)

该属性用于控制避免高速运动的游戏对象穿过其他的对象而未发生碰撞。选项有:

(1)Discrete(离散)

对场景中的所有其他碰撞体 (Collider) 全部使用离散 (Discreet) 碰撞检测。该项为默认值。

(2)Continuous (连续)

对刚体 (Rigidbody) 进行碰撞测试时,对带有刚体的动态碰撞体 (Collider) 使用离散 (Discreet) 碰撞检测;对不带刚体的静态网格碰撞体 (static Mesh Collider)使用连续 (Continuous) 碰撞检测。

(3)Continuous Dynamic (连续动态)

该选项可用于快速移动的对象。

对设置为“连续”(Continuous) 和“连续动态”(Continuous Dynamic) 碰撞的对象使用连续 (Continuous) 碰撞检测。它对不带刚体的静态网格碰撞体也使用连续 (Continuous) 碰撞检测。对于所有其他碰撞体 (Collider),使用离散 (Discreet) 碰撞检测。

注意:连续动态(Continuous Dynamic) 检测需要与之碰撞的对象对物理性能的影响非常大,如果对快速对象的碰撞没有问题,应该将其设置为“离散”(Discreet)而不是连续动态。

8、Constraints (约束)

对刚体 (Rigidbody) 运动的限制。

(1)Freeze Position (冻结位置)

选择性地在世界坐标 X、Y 和 Z 轴上停止刚体 (Rigidbody) 移动。即:刚体对象在世界坐标系中的X、Y、4由方向上(勾选状态)的移动将无效。

(2)Freeze Rotation (冻结旋转)

选择性地停止刚体 (Rigidbody) 围绕世界坐标 X、Y 和 Z 轴的旋转。即:刚体对象在世界坐标系中的X、Y、4由方向上(勾选状态)的旋转将无效。

三、注意事项

1、Rigidbody和Transform只能二选一

刚体(Rigidbody)会使游戏对象在物理引擎的控制下运动,例如可以以真实的碰撞形式来开门或计算其他的行为。通过在刚体上添加作用力来操作游戏对象,这与直接调整Transform组件相比在视觉及感受上都有很大的不同。通常情况下,没有必要在操作—个对象刚体的同时也操作其Transform,只需要二选其一即可。

操作游戏对象的Rigidbody与操作该对象的Transform最大的不同就是刚体有作用力,而且刚体可以接受外力和扭矩,但是Transform无法达到该效果。Transform可以移动和旋转游戏对象,这与使用物理的方式并不相同。

对—个刚体添加外力或扭矩实际上也会改变该对象Transform组件的移动和旋转,这也就是这两者只需要选其一的原因。使用物理方式操作对象的同时又改变它的Transform会导致碰撞及其他相关的计算出现问题。

刚体在受物理引擎作用之前必须要明确地将其添加给一个游戏对象,之后该对象就会受到重力和通过脚本添加的作用力的影响,但根据实际情况可能还需要为其添加碰撞体或关节等以便达到预期的行为效果。

2、父子化 (Parenting)

当对象处于物理控制之下时,其移动方式与其变换父级的移动方式半独立。如果移动任何父级,则会随它们一起拉动刚体 (Rigidbody) 的子级。但是,刚体 (Rigidbody) 仍会由于重力的作用而下落并对碰撞事件作出反应。

3、脚本处理

要控制刚体 (Rigidbody),主要使用脚本添加力或扭矩。可通过对对象的刚体 (Rigidbody) 调用 AddForce() 和 AddTorque() 来实现此目的。

记住:不应在使用物理时直接改变对象的变换 (Transform)。

4、动画

有些情况下,如需要创建布娃娃效果的时候,需要在动画和物理系统间切换对象的控制权。因此当刚体被标记为动力学(isKinematic)模式时,就不会受到如碰撞、作用力或其他物理效果的影响,这就意味着需要直接操作该对象的Transform组件属性来控制该对象了。动力学刚体(Kinematic Rigidbody)会影响其他的对象,但其自身并不受到物理系统的影响。例如,那些绑定到动力学(Kinematic)对象上的关节(Joint)会约束其他绑定到该对象上的刚体(Rigidbody),动力学刚体(Kinematic Rigidbody)在碰撞时会影晌其他的刚体。

转载于:https://www.cnblogs.com/rainmj/p/5453264.html

【Unity】11.2 刚体(Rigidbody)相关推荐

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

    1.RigidBody(刚体)的作用是让物体具有物理特性(比如说重力,摩檫力等等) 2.如果想让物体能够与其它物体发生碰撞的话,我们还需要一个组件 --- Colider碰撞器组件 1.上图就是Uni ...

  2. 第二十五章 Unity 刚体Rigidbody

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

  3. 深入理解Unity刚体(Rigidbody)、碰撞器(Collider)、触发器(Trigger)

    来自:http://blog.csdn.net/monzart7an/article/details/22739421 刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unit ...

  4. Unity 物理系统 -- 刚体简介

    刚体(RigidBody) 在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟.同时我们也可以给这个对象 ...

  5. unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger),边学边更新

    刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可接受 ...

  6. 【Unity入门计划】基本概念(1)-2D刚体Rigidbody 2D

    目录 官方参考文档 我的Unity版本 Rigidbody刚体的作用 Rigidbody 2D的添加 Rigidbody的面板属性 Body Type 刚体类型 Body Type -> Dyn ...

  7. Unity 2D游戏:Rigidbody 2D(2D刚体)

    Rigidbody 2D      属性 说明 Body Type 刚体类型 设置为不同的运动行为(移动和旋转)和碰撞方式. Dynamic(动态,默认).Kinematic(运动学).Static( ...

  8. Unity 物理系统:Rigidbody(刚体)

    Rigidbody组件    属性 释义 说明 Mass 质量 刚体的质量. Drag 阻力 影响位置运动的阻力系数. Angular Drag 角阻力 影响旋转运动的阻力系数. Use Gravit ...

  9. 关于Unity中的刚体和碰撞器的相关用法(一)

    1.创建一个3D工程 2.构造项目文件目录 3.保存场景为game_scene到文件夹scenes中 4.创建一个Plane平面类型的GameObject节点和一个Sphere球体类型的GameObj ...

最新文章

  1. unittest 框架学习
  2. 京沪深月薪均超2万元,清华近三成毕业生年入50万+ | 2019上半年中高端人才就业现状报告...
  3. 华为面试改革,我们该怎么跟进?
  4. MMO游戏War Riders宣布将于基于区块链的游戏开发公司Immutable集成
  5. spring security3.x学习(3)_初探过滤器机制和auto-config用法
  6. 商业洞察力_正在进行的寻求洞察力和远见卓识
  7. 手把手教你玩转nginx负载均衡(三)----配置虚拟服务器网络
  8. 使用Rust库bindgen之Hello World(附代码)
  9. spine 破解 闪退打不开
  10. 3DSMAX 中的CS 骨骼动画插件初探
  11. SQL Server2000安装教程
  12. 软件无线电 多核服务器,软件无线电 SDR LTE平台简介
  13. Exchange邮件服务器渗透
  14. 程序员码字用那种轴的键盘,敲起来更舒适更快捷,我来帮你分析
  15. 【Android】Service管理通知栏通知模板
  16. iOSapp的json告示
  17. PowerDesigner 15下载(破解)
  18. 2019年给Java编程初学者的建议(附学习大纲)
  19. Oracle EBS Interface/API(25) - Lookups API
  20. word打开html显示空白,word的页面显示不正常显示不出来怎么办 word怎么恢复正常页面...

热门文章

  1. 临床观察性研究论文如何撰写“方法”?
  2. 机器人学习--粒子滤波/MCL定位的理论基础(先验知识)
  3. 问题 | Spare BA 中的Eigen运行错误
  4. OpenCV | 基于visual studio 2010版本的OpenCV3.0.0配置文件
  5. netty服务器返回信息关闭,netty4 服务端同步客户端返回的结果
  6. mysql怎么实现事务序列化_一文快速搞懂MySQL InnoDB事务ACID实现原理(转)
  7. linux控制命令使用限制,【L-shell】Linux 系统下 限制用户的活动目录,控制用户使用命令的权限。...
  8. 英语语法---主语详解
  9. pd 生成mysql 脚本_PowerDesigner 如何生成数据库更新脚本
  10. mac鼠标和触控板滚动方向_Apple 无线鼠标、键盘或触控板各型号的Mac系统要求和区别...