刚体(RigidBody)
在Unity理引擎中,使用刚体(RigidBody)来模拟这种物理效果,当一个游戏对象被赋予刚体组件之后,游戏引擎就会对其进行物理效果的计算和模拟。同时我们也可以给这个对象施加各种作用力,让它运动起来。另外如果要实现重力的效果,那么相应的游戏物体都必须附上刚体组件。
组件的添加:在Inspector面板中->Add Component->Physics->Rigidbody
组件面板上的属性
  • Mass:质量。
    质量越大,惯性越大。建议场景中的物体质量最好不要相差100倍率以上。防止两个质量相差太大的物体碰撞后会产生过大的速度,从而影响游戏性能及呈现的效果。
  • Drag:阻力(摩擦力)。
    这里指的是空气阻力,属性数值影响阻碍此物体对象的直线运动的速度效果。当游戏物体受到某个作用力的时候,这个值越大越难移动。如果设置成无限的话,物体会立即停止移动。
  • Angular Drag:角阻力(旋转摩擦力)。
    同样指的是空气阻力,只不过是用来阻碍物体旋转的。如果设置成无限的话,物体会立即停止旋转。
  • Use Gravity:使用重力效果
    不勾选,则不会受到重力影响。
  • Is Kinematic:是否符合运动学的(是否受到物理引擎的驱动)。
    勾选后,变成不再受物理引擎的影响,改为受Transform的影响。即不再有重力,不再被碰撞等,只会呆在Transform规定的位置上不动,物体撞击时候像一堵墙一样不会倒,位置不会因碰撞而发生改变。
  • Interpolate:差值类型。
    如果看到刚体移动的时候运动的不是很平滑,可以选择一种平滑方式。即:平滑物体运动的曲线。
    None(无差值):不使用差值平滑。
    Interpolate(差值):根据上一帧来平滑移动。
    Extrapolate(推算):根据推算下一帧物体的位置来平滑移动。
  • Collision Detection 碰撞侦测。用来改变物体碰撞检测的精度。
    Discrete(离散):默认的碰撞检测方式。但若当物体A运动很快的时候,有可能前一帧还在B物体的前面,后一帧就在B物体后面了,这种情况下不会触发碰撞事件,所以如果需要检测这种情况,那就必须使用后两种检测方式。
    Continuous(连续):这种方式可以与有静态网格碰撞器的游戏对象进行碰撞检测。 可以避免因物体移动速度过快而穿过另一个物体的情况。
    Continuous Dynamic(动态连续):这种方式可以与所有设置了2或3方式的游戏对象进行碰撞检测。
  • Constraints:约束。
    约束位置或旋转时的x/y/z坐标,使其Freeze(冻结)。比如想控制游戏对象人物上台阶不会摔倒,或者高速碰到一个墙壁物体时不会胡乱转动的话,则要冻结x,y和z轴的旋转。
  • centerOfMass:相对于变换原点的质心。
  • angularVelocity 刚体的角速度向量,修改它可以使刚体进行旋转
注意:处理Rigidbody时,一般情况物理仿真需要用FixedUpdate代替Update。
代码添加力的方法:
  • AddForce 添加到刚体的力。
  • AddForceAtPosition 在position位置应用force力。作为结果这个将在这个物体上应用一个扭矩和力。
  • AddRelativeForce 添加力到刚体。相对于它的系统坐标。
Constant Force组件属性介绍:(依附于刚体组件存在)
  • Force:绝对力 世界坐标力。
  • Relative Force:相对力 自身坐标力。
  • Torque[tɔ:k] :绝对扭距 世界坐标扭距。
  • Relative Torque:相对扭距 自身坐标扭距。
相关函数:
  • 刚体睡眠(Sleep)和唤醒(WakeUp)函数
  • Sleep 使刚体睡眠,不进行移动。
  • WakeUp 使刚体能够运动。

通过刚体的速度向量(velocity)控制移动

示例:创建一个Cube,添加刚体组件,编写脚本,利用Rigidbody.velocity刚体的速度向量驱动物体运动,通过按空格键按下使物体向上运动。

using UnityEngine;
using System.Collections;
public class example : MonoBehaviour {private Rigidbody rigidbody;void Start(){//获取挂载物体上的RigidBody组件this.rigidbody=this.GetComponent<RigidBody>();}void FixedUpdate() {if (Input.GetButtonDown("Jump"))  //按下空格键//对刚体设置速度向量this.rigidbody.velocity = new Vector3(0, 10, 0);}
}
AddExplosionForce 应用一个力到刚体来模拟爆炸效果。
API文档中的实例
using UnityEngine;
using System.Collections;public class ExampleClass : MonoBehaviour {public float radius = 5.0F;public float power = 10.0F;void Start() {Vector3 explosionPos = transform.position;Collider[] colliders = Physics.OverlapSphere(explosionPos, radius);foreach (Collider hit in colliders) {Rigidbody rb = hit.GetComponent<Rigidbody>();if (rb != null)rb.AddExplosionForce(power, explosionPos, radius, 3.0F);}}
}

Unity 物理系统 -- 刚体简介相关推荐

  1. Unity 物理系统 -- 碰撞体简介(碰撞、触发条件)

    Unity 物理系统 -- 碰撞体简介(碰撞.触发条件) 几个常用的碰撞体: Box Collider:盒碰撞体,盒碰撞体是一个立方体外形的基本碰撞体,该碰撞体可以调整为不同大小的长方体,可用作门.墙 ...

  2. Unity物理系统中碰撞体、刚体、isKinematic、isTrigger的关系(附动画演示)

    Unity物理系统中碰撞体.刚体.isKinematic.isTrigger的关系 写在前面 产生碰撞的条件 产生触发的条件 实验一:蓝块(碰撞体).红块(碰撞体) 实验二:蓝块(碰撞体).红块(碰撞 ...

  3. Unity 物理系统

    Unity物理系统 ##1.人机交互 ++1.1.外部输入设备 ++++键盘 ++++触屏 ++++摇杆 ++++鼠标 ++1.2.Input类简介 ++++Input类是输入系统的接口,使用这个类能 ...

  4. unity 计时器_如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(二)

    上一期中,我们完成了角色在没有任何输入的情况下实现了站立平衡,这期,我们就来聊一下角色的运动吧. 玄夜smile:如何用unity 物理系统 实现Stickfight中火柴人的布娃娃效果(一) ,还没 ...

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

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

  6. 7.Unity中c#代码学习(物理系统刚体+碰撞检测(爆炸效果实现))

    刚体        通过添加组件Physics/Rigidbody            实现对物体插入物理引擎(刚体)  碰撞体         查看碰撞体范围        可以编辑碰撞的范围  ...

  7. 【物理篇】从零搭建2D物理系统①——刚体和碰撞检测事件

    前言 说到unity的物理系统,大家肯定第一反应肯定是"不就是rigidbody和collider那些东西吗,我会".但是提及背后的原理,我敢说99%的人是不知道的.unity的物 ...

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

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

  9. Unity UI系统-UGUI简介

    UGUI的简介: UGUI系统是从Unity 4.6开始,被集成到Unity的编辑器中Unity官方给这个新的UI系统赋予的标签是:灵活,快速和可视化!,简单来说对于开发者而言就是有三个优点:效率高效 ...

最新文章

  1. 查找(包括顺序查找和折半查找)
  2. 用Spring Cloud Alibaba开发微服务会更香吗?
  3. php项目webpack打包,Vue项目webpack打包部署时Tomcat刷新报404错误问题如何处理
  4. 鸿蒙正式推送时间,鸿蒙系统现已正式推送,更新名单也随之出炉,包括荣耀手机!...
  5. ABAP RANGES 在 RFC 的应用示例
  6. Zend Studio 0x80070666错误解决
  7. 关于日历的一个超级存储过程
  8. Source code manager common
  9. Java 208 道面试题:第一模块答案
  10. 【TWVRP】基于matlab智能水滴算法带时间窗的车辆路径与调度优化问题【含Matlab源码 1228期】
  11. R语言中写入Excel的不同sheet表格
  12. Vs2013(VS2012,vs2011,vs2010)+opencv2.4.8配置
  13. 如何提升代码的安全性 —— 代码防御性编程的十条技巧
  14. R语言聚类分析——代码解析
  15. shiyou的数值分析作业
  16. GitHub学生优惠:repl.it 使用--Python爬虫示例
  17. 火狐Android 附加组件,Firefox Nightly 隐藏新功能,让 Android 机用上任意桌面端附加组件...
  18. 心愿未了有牵绊。生命不息,折腾未止。
  19. 交换机最多可以接几个_【技术】详解一个交换机能带动多少个网络监控摄像头?...
  20. 紫羚云秦鸿林:大中型企业实施IT服务管理(ITSM)的几大难题

热门文章

  1. Java实现发送邮件并携带附件
  2. java将多个文件写入到一个文件流中再有规律的取出_编写java程序,往一个txt文件里写入学生的基本信息,然后再读出这些信息并打印出来,最后把该文件拷贝到指...
  3. IDEA上Java项目控制台中文乱码
  4. 用123BOM工具处理同产品的多个BOM单这是整理研发BOM最好用的工具;是方案公司、产品型号多、同一个产品多个版本子BOM制定单一、准确的研发BOM清单的更好方式
  5. python飞行棋小游戏
  6. 全栈工程师之路---2018最全web开发路线图
  7. Java应用通过wsdl文件调用webservice
  8. malloc函数java_malloc函数具体解释
  9. RG Magic Bullet 15(中英对照)
  10. 小程序列表页分页获取数据,下滑加载更多