物理引擎之Rigibody和Constant Force

Unity物理引擎首次听说这个名词的时候觉得很高端大气上档次,而开始真正去了解他的时候,觉得原来也就是那么回事。物理引擎就是模拟物体在现实中的效果,而在现实中所有物体都收到重力的影响,所以物理引擎的核心组件也就是刚体了。

Paste_Image.png
  • Mass质量,在场景中所有物体的质量最好控制在100倍数以内(最小质量和最大物体的质量的倍数),否则可能会出现一些小BUG。
  • Drag 阻力,这个我们应该都不陌生,但是需要注意一点的是这个阻力应该是空气阻力,而如果我们想给他添加地面摩擦力,我们可以通过Physics Material这种材质来添加。
  • Angular Drag 角速度阻力,也可以理解为旋转阻力。如果这个力特别大,那他旋转就特别困难。
  • Use Gravity 是否使用重力(当我们添加Rigibody组件以后,该物体就是一个刚体,不管你是否选择使用重力)
  • Is Kinematic 是否是运动学,如果勾选则该刚体不受物理引擎的影响,也可以理解为静态刚体。(在碰撞检测时,勾选上就属于运动学刚体碰撞,不勾选就是刚体碰撞)
  • Interpolate 插值


    Paste_Image.png

    假如我们的物体在运动中出现不正常抖动的时候,就可以选择第二项Interpolate或者第三项Extrapolate,意思就是执行平滑操作,默认的为第一项不执行平滑操作,第二选项的意思,根据上一帧动作,来添加平滑效果,第三个选项是系统预测下一帧动作,来添加平滑效果。

  • Collision Detection 碰撞检测延迟(间隔时间)
Paste_Image.png

disrete 不连续,Continous连续,Continuous Dynamic 动态连续,这三个是从低到高排的,越高则,物理引擎的计算量越大,付出的代价也就越高。有的时候当我们速度过快时,刚体有的时候可能会穿过collider,而当我们选择第三项动态连续监测的时候,就不会穿过了。

  • Constraints
Paste_Image.png

Freeze Position 冻结在某个轴向的位移
Freeze Rotation 冻结在某个轴向的旋转

注意 刚体休眠

在项目中有的时候可能会出现刚体休眠的情况,刚体休眠的时候,系统就不会对该刚体进行计算,此时如果物体发生静态碰撞(在碰撞中会讲到静态碰撞)就会失效,检测不到该刚体,而唤醒刚体,我们可以通过三种方法

  • 脚本控制 通过WakeUp的方法,唤醒刚体
  • 动态碰撞
  • 给刚体施加力

ConstantForce

让刚体移动我们就需要给刚体一个力,而这个力的添加我们可以通过一个ConstantForce这个组件来添加


Paste_Image.png

我们看下这个组件的属性

Paste_Image.png

Force 是按照世界坐标给该物体添加力
Relative Force 相对力,是按照自身坐标系给物体添加力
Torque 按照世界坐标添加扭矩力(就是旋转力,在哪个轴向添加,就会绕着哪个轴旋转)
Relative Torque 按照自身坐标系添加扭矩力
我们这个组件只是添加一个恒定的力,我们除了这个组件,我们也可以通过代码去控制给刚体添加力,这样更灵活。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先要熟悉一些基本的力学名词及相关公式 刚体(Rigidbody):刚体是指在运动中和受到力的作用后,形状和大小不...
    FLY旳影子阅读 11,670评论 0 11
  • http://www.maiziedu.com/course/540/ 组件教程 prefabs教程http://...
    GZasplin阅读 1,256评论 0 0
  • 一、引言 物理引擎是一个很大的标题,在这里,我只记录一些我们较为常用的一些东西,其他的一些深入的东西,随着我们的开...
    SimanX阅读 2,121评论 0 3
  • 1.游戏对象受力的影响是常见的游戏情景,比如赛车游戏,赛车受到推力、摩擦力、碰撞力等力的影响,产生运动。物理引擎是...
    L_Sherlock阅读 6,303评论 0 5
  • 刚刚看完热播电视剧《大嫁风尚》,女主夏燃终于收获美好的爱情。 电视剧开头婚礼策划师夏燃被男朋友蒋剑南抛弃,不知所踪...
    顾紫阅读 473评论 0 0