物理引擎之Rigibody和Constant Force

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

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


    物理引擎之Rigibody和Constant Force_第2张图片
    Paste_Image.png

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

  • Collision Detection 碰撞检测延迟(间隔时间)
物理引擎之Rigibody和Constant Force_第3张图片
Paste_Image.png

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

  • Constraints
Paste_Image.png

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

注意 刚体休眠

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

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

ConstantForce

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


物理引擎之Rigibody和Constant Force_第4张图片
Paste_Image.png

我们看下这个组件的属性

Paste_Image.png

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

你可能感兴趣的:(物理引擎之Rigibody和Constant Force)