Version: Unity 6.0 (6000.0)
语言 : 中文
碰撞体表面
碰撞体表面弹力

碰撞体表面摩擦力

在现实世界中,摩擦力是阻碍彼此接触的两个表面之间运动的力。例如,冰的表面摩擦力低,物体可以在其表面上轻松滑动。橡胶表面的摩擦力高,可防止物体在其表面上滑动。

在 PhysX 系统中,有两种可以控制的摩擦力:

当碰撞体静止时,静态摩擦力适用。当碰撞体与另一个碰撞体接触时,大量的静态摩擦力会阻止碰撞体开始移动。当碰撞体移动时,动态摩擦力适用。当碰撞体与另一个碰撞体接触时,大量的动态摩擦力会阻碍碰撞体的移动速度。

在物理模拟中,当您需要堆叠对象时,静态摩擦力尤为重要。例如,如果将一个低摩擦力对象放在另一个低摩擦力对象之上(例如将冰块放在另一个冰块之上),即使底部对象处于静止状态,由于它们之间的摩擦力低,也可能导致顶部对象发生移动。

PhysX 会将大于单个点的接触表面(例如两个相互叠放的盒子)计算为具有多个接触点。这反过来又会使摩擦力倍增。如果发生这种情况,则需要按比例调整摩擦力值,例如,如果有两个接触点,则应将摩擦力值减半。

Unity 中的默认摩擦力为 0.6。此值在大多数项目中模拟了现实中的摩擦力。

摩擦力计算

您可以选择 PhysX 用于模拟碰撞体之间摩擦力的计算类型。为此,请转到物理设置 (Physics Settings)(编辑 (Edit) > 项目设置 (Project Settings) > 物理 (Physics)),并使用 Friction Type 属性。请参阅物理设置文档了解有关每种摩擦类型的更多信息。

摩擦类型的选择总是需要平衡精确性和性能;更高的精确性往往需要更多的处理时间。有些项目需要极其精确的摩擦力,而其他项目则更注重性能优化。选择最适合项目侧重点的摩擦类型。默认摩擦类型为 Patch Friction

  • Patch Friction:面片摩擦根据碰撞体表面力的分布来计算多个方向的摩擦力。面片摩擦非常准确,但这一选项的计算量最大。
  • One-directional Friction:单向摩擦是一种更简单的摩擦力计算方法,考虑了沿单个垂直方向的摩擦力。单向摩擦是精确性最低且计算量最小的选项。
  • Two-directional Friction:双向摩擦是单向摩擦一种变体,考虑了两个垂直方向上的的摩擦力。它比单向摩擦更准确,但不如面片摩擦准确。
碰撞体表面
碰撞体表面弹力