[Unity 3D] 物理引擎学习笔记(一)

刚体:

  同是物理引擎提供的功能,碰撞检测只需要有 Collider 便可以运作,但所有与作用力相关的属性和函数却都依赖 Rigidbody。

重力:

  一旦使用了 Rigidbody 组件,这个 GameObject 就会受全局重力影响,同时在发生物理碰撞时会自动调用物理引擎进行碰撞处理。

  全局重力可以在 Physics Manager 中进行调整,具体位置为:“Edit -- Project Settings -- Physics”。

  其中,

  Gravity 项就是全局重力,是一个 Vector3 型变量,包含 X,Y,Z 三个分量,默认情况下其大小为 (0, -9.81, 0) 也就是指向全局坐标 -Y 方向大小为 9.81 的作用力。

  Default Material 是所有 Collider 在默认情况下使用的物理材质,物理材质定义了跟表面摩擦系数和弹性系数相关的参数,默认情况下这里使用的是 None(Physic Material) ,在实际游戏中静摩擦为 0.4,动态摩擦为 0.4。

  Sleep Velocity 定义了 GameObject 退出物理运算的速度阈值,当 GameObject 的运动速度低于这个阈值时将进入休眠状态,物理引擎不再对其进行运算,一旦休眠的 GameObject 受到其他 GameObject 碰撞,或者被施加了作用力,则会立刻解除休眠。

  Sleep Angular Velocity 定义了 GameObject 退出物理运算的角速度阈值,当 GameObject 的旋转速度低于这个阈值时将进入休眠状态。

  Max Angular Velocity 是最大旋转速度,任何 GameObject 在默认状态下都不会超过这个旋转速度。这里有意思的一点是,当一个球在粗糙面(有摩擦)上受到外力滚动时,在旋转速度没有超过最大旋转速度阈值前,其位移速度和旋转速度是匹配的(也就是可以通过滚动一周位移距离为2πr,转过角度为2π,从一个速度换算出另一个);一旦超过阈值,球的旋转速度不再增加,而位移速度不受限制,此时两种速度不再匹配;外力撤除后,球在摩擦作用下减速,这时可以发现旋转速度不变而位移速度飞快下降,直到位移速度恢复到能够与阈值范围内的旋转速度相匹配时,两种速度才开始共同下降,并且位移速度的下降幅度也瞬间回到正常摩擦作用下的递减水平(大大减缓)。

  重力其实可以看作是一个施加在所有 rigidbody 上的 constant force,所以即便是将全局重力设为 0,也可以通过给一个 rigidbody 添加 (0, -9.81, 0) 的 constantForce 来达到模拟重力的目的。

阻力:

  阻力有 Friction 和 Drag 两种,前者是表面摩擦,后者是风阻。Friction 在 Collider 的 Physic Material 中定义,Drag 则是在 Rigidbody 里定义。

  Friction 又有 staticFriction 和 dynamicFriction 之分,staticFriction 是当 GameObject 静止时的静摩擦,它决定要用多大的作用力才能让 GameObject 开始运动,dynamicFriction 是 GameObject 开始运动时会受到来自接触面的摩擦,这是只要 GameObject 保持接触并存在相对运动就会一直存在的作

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值