Version: 2020.3
Package Manager
Physics 2D

物理 (Physics)

使用 Physics 设置(主菜单:Edit > Project Settings,然后选择 Physics 类别)可应用 3D 物理全局设置。

注意:要管理 2D 物理的全局设置,请改用 Physics 2D 设置。

3D Physics 设置
3D Physics 设置

这些设置定义了物理模拟精度的限制。一般来说,更精确的模拟需要更多的处理开销,因此这些设置提供了一种精度与性能的折衷方法。有关更多信息,请参阅本手册的物理部分。

属性 功能
Gravity 使用 x、y 和 z 轴设置应用于所有刚体组件的重力。对于真实的重力设置,应将负数应用于 y 轴。重力以每平方秒的世界单位定义。
注意:如果增大重力,可能还需要增大 Default Solver Iterations 值以保持稳定的接触。
Default Material 设置在没有为单独碰撞体分配材质的情况下需要使用的默认物理材质。
Bounce Threshold 设置速度值。如果两个碰撞对象的相对速度低于此值,则它们在碰撞后不会相互反弹。此值还可以减少抖动,因此不建议将其设置为非常低的值。
Sleep Threshold 设置一个全局能量阈值;当低于该阈值时,非运动刚体(即不受物理系统控制的刚体)可进入睡眠状态。刚体处于睡眠状态不会每帧更新,因此可减少资源消耗。如果刚体的动能除以其质量低于此阈值,该刚体将作为睡眠候选者。
Default Contact Offset 设置碰撞检测系统用于产生碰撞接触的距离。该值必须为正,如果设置得太接近零,可能导致抖动。默认情况下,该值设置为 0.01。仅当碰撞体的距离小于其接触偏移值的总和时,碰撞体才产生碰撞接触。
Default Solver Iterations 定义 Unity 在每个物理帧运行的解算器进程数。解算器是小型物理引擎任务,决定了许多物理交互,例如关节运动或管理重叠刚体组件之间的接触。
此设置会影响解算器输出的质量,如果使用非默认的 Time.fixedDeltaTime,或者配置要求极高,建议更改此属性。通常,此属性用于减少关节或接触引起的抖动。
Default Solver Velocity Iterations 设置解算器在每个物理帧中执行的速度进程数。解算器执行的进程越多,刚体反弹后产生的退回速度的精度就越高。如果遇到连接的刚体组件或布娃娃在碰撞后移动太多的问题,请尝试增加此值。
Queries Hit Backfaces 如果希望物理查询(例如 Physics.Raycast)检测是否命中 MeshColliders 的背面三角形,请启用此选项。默认情况下会禁用此设置。
Queries Hit Triggers 如果希望物理命中测试(例如射线投射、SphereCasts 和 SphereTests)在与标记为触发器的碰撞体相交时返回命中,请启用此选项。单个射线投射可以覆盖此行为。默认情况下会启用此设置。
Enable Adaptive Force 启用此选项可启用自适应作用力。自适应作用力会影响通过一堆对象传递力的方式,可提供更真实的行为。默认情况下会禁用此设置。
Contacts Generation 选择接触生成方法。
Legacy Contacts Generation 在 Unity 5.5 之前,Unity 使用了基于分离轴定理 (SAT) 的接触生成方法。

PCM 效率更高,但对于较旧的项目,您可能发现继续使用 SAT 会更方便,因为无需略微重新调整物理设置。PCM 可以产生稍微不同的反弹,并且在接触缓冲区中出现的无用接触更少(即在 Collision 实例中得到的传递给 OnCollisionEnterOnCollisionStayOnCollisionExit 的数组)。

升级建议:要迁移使用 Unity 2018.2 或更低版本制作的项目,可能需要更新脚本以便使用代码在复合体中合并面片以及选择接触。
Persistent Contacts Manifold (PCM) 每个物理帧生成更少的接触,跨帧共享更多接触数据。PCM 接触生成路径也更准确,并通常在大多数情况下产生更好的碰撞反馈。如需了解更多信息,请参阅有关 Persistent Contact Manifold 的 Nvidia 文档
这是默认值。
Auto Simulation 启用此选项可自动运行物理模拟或允许对其进行显式控制。
Auto Sync Transforms 启用此选项可在变换组件发生更改时自动将变换更改与物理系统同步。默认情况下会禁用此设置。
Contact Pairs Mode 选择要使用的接触对生成类型。
Default Contact Pairs 接收来自除运动/运动和运动/静态接触对之外的所有接触对的碰撞和触发事件。
Enable Kinematic Kinematic Pairs 接收来自运动/运动接触对的碰撞和触发事件。
Enable Kinematic Static Pairs 接收来自运动/静态接触对的碰撞和触发事件。
Enable All Contact Pairs 接收来自所有接触对的碰撞和触发事件。
Broadphase Type 选择要在物理模拟中使用的粗筛阶段算法。请参阅有关 PhysX SDK刚体碰撞 (Rigid Body Collision) 的 NVIDIA 文档。
Sweep and Prune Broadphase 使用“扫掠修剪”粗筛阶段碰撞方法(即沿单个轴排序对象以避免必须检查相距很远的对)。
Multibox Pruning Broadphase 多盒修剪使用网格,每个网格单元格执行扫掠修剪。这通常有助于提高性能,例如在平坦世界中有大量游戏对象时。
Automatic Box Pruning 该算法与 Multibox Pruning 的算法相似,不同之处在于该算法还可以自动计算世界边界和细分数量。该算法将维护一组网格单元格,并使用常规的“扫掠修剪”方法来计算可能重叠的碰撞体对。该算法通常适用于大型场景,在这样的场景中单个“扫掠修剪”会产生很多额外的误报。
World Bounds 使用 Multibox Pruning Broadphase 算法时,定义包围世界的 2D 网格以防止相距遥远的对象相互影响。
仅在 Broadphase Type 设置为 Multibox Pruning Broadphase 时使用此选项。
World Subdivisions 2D 网格算法中沿 x 和 z 轴的单元格数。
仅在 Broadphase Type 设置为 Multibox Pruning Broadphase 时使用此选项。
Friction Type 选择用于模拟的摩擦力算法。
Patch Friction Type 一种基本的强大摩擦力算法,通常可以在较低的解算器迭代次数下产生最稳定的结果。此方法为每对触摸对象仅使用最多四个标量解算器约束。
One Directional Friction Type 库仑摩擦力模型的简化版,其中将给定接触点的摩擦力施加在接触法线的交替切线方向上。可减少收敛所需的迭代次数,但不如双向模型精确。
Two Directional Friction Type 与单向模型一样,但同时在两个切线方向上施加摩擦力。这需要更多的解算器迭代次数,但更精确。对于具有许多接触点的情况,比面片摩擦的成本更高,因为这会应用于每个接触点。
Enable Enhanced Determinism 无论角色是否存在,场景中的模拟都是一致的(前提是游戏以确定的顺序插入角色)。此模式牺牲了一些性能来确保这种额外的确定性。
Enable Unified Heightmaps 启用此选项可以像处理网格碰撞一样处理地形碰撞。
Solver Type 选择要用于模拟的 PhysX 解算器。
Projected Gauss Seidel 默认 PhysX 解算器。
Temporal Gauss Seidel 该解算器提供更好的收敛性和更好的高质量比处理方式,在校正穿透时可以最大限度减小引入的能量,并可提高关节抗过度拉伸的能力。使用默认解算器在模拟过程中遇到一些不稳定的行为时,使用这种解算器通常会有帮助。
Layer Collision Matrix 定义基于层的碰撞检测系统的行为方式。选择碰撞矩阵中的哪些层与其他层交互(勾选相应层即可)。
Cloth Inter-Collision
Distance 定义每个互碰撞的布料粒子的包裹球体的直径。Unity 确保这些球体在模拟过程中不会重叠。Distance 属性的值应小于配置中的两个粒子之间的最小距离。如果距离较大,则布料碰撞可能违反某些距离约束并导致抖动。
Stiffness 互碰撞的布料粒子之间的分离冲力的强度。此值由布料解算器进行计算,应足以保持粒子分离。



  • 2018–10–12 页面已修订

  • 在 5.5 版中添加的设置:Default Solver Iterations、Default Solver Velocity Iterations、Queries Hit Backfaces、Enable PCM

  • 在 2017.4 版中更新了 Physics Manager 设置文档

  • 2018.3 版本中添加了 Friction Type、Enhanced Determinism 和 Unified Heightmaps 物理设置NewIn20183

Package Manager
Physics 2D