美文网首页
物理引擎之Rigibody和Constant Force

物理引擎之Rigibody和Constant Force

作者: LeoYangXD | 来源:发表于2017-01-09 11:37 被阅读252次

    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 按照自身坐标系添加扭矩力
    我们这个组件只是添加一个恒定的力,我们除了这个组件,我们也可以通过代码去控制给刚体添加力,这样更灵活。

    相关文章

      网友评论

          本文标题:物理引擎之Rigibody和Constant Force

          本文链接:https://www.haomeiwen.com/subject/yngcbttx.html