要应用 3D 物理的全局设置,请使用 **Physics** 设置(主菜单:**编辑** > **项目设置**,然后选择 **Physics** 类别)。
注意:要管理 2D 物理的全局设置,请改用 Physics 2D 设置。
Physics 设置定义了 3D 物理模拟精度方面的限制。在大多数情况下,更精确的模拟需要更多的处理开销,因此这些设置提供了一种方法,可以在精度和性能之间进行权衡。
**Physics** 面板包含设置,用于定义要在项目中使用哪些 Physics SDK。
设置 | 描述 |
---|---|
游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、路径点等。游戏对象的功用由附加到它的组件定义。 更多信息 请参阅 术语表 SDK |
定义要用来管理项目中游戏对象上的物理模拟的 SDK。默认设置是 **PhysX**。设置为 **无** 以禁用项目中游戏对象的物理模拟。 |
Physics 设置还包含一个名为 **设置** 的面板。
设置面板包含所有 Physics SDK 的设置。以下选项卡可用
共享 选项卡包含适用于所有物理 SDK 的全局设置。
属性 | 功能 |
---|---|
重力 | 使用 x、y 和 z 轴来设置应用于所有刚体组件的重力大小。对于现实的重力设置,请对 y 轴应用负数。重力以每秒平方世界单位定义。 注意:如果您增加重力,您可能还需要增加 **默认求解器迭代次数** 值以保持稳定的接触。 |
层碰撞矩阵 | 定义 基于层的碰撞 检测系统如何运行。要选择碰撞矩阵上哪些层与其他层交互,请选中它们各自的复选框。 |
游戏对象 选项卡包含适用于项目中所有游戏对象的全局物理设置。
属性 | 功能 | |
---|---|---|
默认材质 | 设置对默认 物理材质一个物理资产,用于调整碰撞对象的摩擦力和弹跳效果。 更多信息 请参阅 术语表 的引用,如果未将任何物理材质分配给单个 碰撞器一个不可见的形状,用于处理对象的物理碰撞。碰撞器不需要与对象的网格完全相同的形状 - 大致的近似通常更高效,在游戏玩法中无法区分。 更多信息 请参阅 术语表,则使用该物理材质。 |
|
弹跳阈值 | 设置一个速度值。如果两个碰撞对象的相对速度低于此值,它们不会反弹。此值还可以减少抖动,因此不建议将其设置为非常低的值。 | |
默认最大穿透速度 | 定义最大穿透速度的默认值(求解器在尝试将物体从与其他物体的重叠中拉出时可以设置到物体上的速度)。 | |
休眠阈值 | 设置一个全局能量阈值,低于此阈值,非运动学 刚体一个组件,允许游戏对象受到模拟重力和其它力的影响。 更多信息 请参阅 术语表(即不受物理系统控制的刚体)可能会进入休眠状态。当刚体处于休眠状态时,它不会在每一帧都进行更新,这使其资源消耗更少。如果刚体的动能除以它的质量低于此阈值,它就是一个休眠候选者。 |
|
默认接触偏移量 | 设置 碰撞检测Unity 执行的一个自动过程,用于确定具有刚体和碰撞器组件的移动游戏对象是否与任何其他碰撞器发生接触或重叠。 更多信息 请参阅 术语表 系统用来生成碰撞接触的距离。该值必须为正数,如果设置得太接近零,会导致抖动。默认情况下,此设置为 0.01。只有当碰撞器之间的距离小于它们的接触偏移量之和时,碰撞器才会生成碰撞接触。 |
|
默认求解器迭代次数 | 定义 Unity 在每一物理帧上运行多少个求解器进程。求解器是小型物理引擎任务,用于确定一些物理交互,例如关节的移动或管理重叠的刚体组件之间的接触。 这会影响求解器输出的质量,建议在使用非默认 Time.fixedDeltaTime 或配置要求更高的情况下更改此属性。通常,它用于减少关节或接触导致的抖动。 |
|
默认求解器速度迭代次数 | 设置求解器在每一物理帧中执行多少个速度进程。求解器执行的进程越多,刚体反弹后产生的出口速度的准确性越高。如果您遇到关节刚体组件或 Ragdoll 在碰撞后移动过大的问题,请尝试增加此值。 | |
查询命中背面 | 如果您希望物理查询(例如 Physics.Raycast )检测到与网格碰撞器的背面三角形发生命中,请启用此选项。默认情况下,此设置处于禁用状态。 |
|
查询命中触发器 | 如果您希望物理命中测试(例如射线投射、球形投射和球形测试)在与标记为触发器的碰撞器相交时返回命中,请启用此选项。单个射线投射可以覆盖此行为。默认情况下,此设置处于启用状态。 | |
启用自适应力 | 启用此选项以启用自适应力。自适应力会影响力通过物体堆或堆栈传递的方式,以提供更逼真的行为。默认情况下,此设置处于禁用状态。 | |
接触生成 | 选择接触生成方法。 | |
旧版接触生成 | 在 Unity 5.5 之前,Unity 使用了基于分离轴定理 (SAT) 的接触生成方法。 PCM 更高效,但对于旧项目,您可能会发现继续使用 SAT 更容易,以避免需要稍微重新调整物理参数。PCM 可能会导致略微不同的弹跳,并且最终进入接触缓冲区(即您在 碰撞当物理引擎检测到两个游戏对象的碰撞器发生接触或重叠时,就会发生碰撞,此时至少有一个游戏对象具有刚体组件并处于运动状态。 更多信息 请参阅 术语表 实例中传递给 OnCollisionEnter 、OnCollisionStay 和 OnCollisionExit 的数组)的无用接触更少。升级建议:要迁移在 Unity 2018.2 或更低版本中制作的项目,您可能需要更新脚本以配合合并了补丁的代码,该代码会合并补丁并选择接触。 |
|
持久接触流形 (PCM) | 在每一物理帧中生成的接触更少,并且更多接触数据会在帧之间共享。PCM 接触生成路径也更准确,通常在大多数情况下会产生更好的碰撞反馈。有关详细信息,请参阅 英伟达关于持久接触流形的文档。 这是默认值。 |
|
模拟模式 | 选择 Unity 执行物理模拟的时间。默认值为 **固定更新**。 | |
固定更新 | 在 MonoBehaviour.FixedUpdate 之后立即执行物理模拟。 |
|
更新 | 在 MonoBehaviour.Update 之后立即执行物理模拟。 |
|
脚本 | 当脚本调用 Physics.Simulate 时执行物理模拟。 |
|
自动同步变换 | 启用此选项以在 变换组件变换组件确定场景中每个对象的 位置、旋转和缩放。每个游戏对象都具有变换。 更多信息 请参阅 术语表 发生更改时自动将变换更改与物理系统同步。默认情况下,此设置处于禁用状态。 |
|
重复使用碰撞回调 | 启用以重复使用碰撞回调。物理系统只创建 Collision 类型的单个实例,并将其重复用于每个单独的回调。这减少了垃圾收集器需要处理的浪费,并提高了性能。此属性默认情况下处于启用状态。 | |
调用碰撞回调 | 为 MonoBehaviour 碰撞消息发送 OnCollisionEnter 、OnCollisionStay 和 OnCollisionExit 到实现 OnCollision 方法的相应 脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性并以您喜欢的任何方式响应用户输入。 更多信息请参阅 术语表。 |
|
接触对模式 | 选择要使用的接触对生成类型。 | |
默认接触对 | 从所有接触对接收碰撞和触发事件,除了运动学-运动学对和运动学-静态对。 | |
启用运动学-运动学对 | 从运动学-运动学接触对接收碰撞和触发事件。 | |
启用运动学-静态对 | 从运动学-静态接触对接收碰撞和触发事件。 | |
启用所有接触对 | 从所有接触对接收碰撞和触发事件。 | |
广相类型 | 选择要在物理模拟中使用的 广相算法。请参阅英伟达关于 PhysX SDK 和 刚体碰撞 的文档。 | |
扫描和修剪广相 | 使用扫描和修剪广相碰撞方法(即沿单个轴对物体进行排序,以避免需要检查相距很远的对)。 | |
多框修剪广相 | 多框修剪使用网格,每个网格单元格执行扫描和修剪。如果例如在一个扁平世界中有很多游戏对象,这通常有助于提高性能。 | |
自动框修剪 | 此算法类似于 Multibox Pruning 算法,但它还可以自动计算世界边界和细分数。它维护网格单元的集合,并使用常规的扫描和修剪方法来找出可能重叠的碰撞器对。它通常对大型场景有帮助,在这种情况下,单次扫描和修剪会产生许多额外的误报。 | |
世界边界 | 定义包含世界的二维网格,以防止使用 Multibox Pruning Broadphase 算法时,远处的物体相互影响。 仅当将 Broadphase Type 设置为 Multibox Pruning Broadphase 时,才会使用此选项。 |
|
世界细分 | 二维网格算法中沿 x 轴和 z 轴的单元格数量。 仅当将 Broadphase Type 设置为 Multibox Pruning Broadphase 时,才会使用此选项。 |
|
摩擦类型 | 选择用于仿真的摩擦算法。 | |
补丁摩擦类型 | 一种基本的强摩擦算法,它通常会导致在较低的求解器迭代次数下获得最稳定的结果。此方法每个接触物体对仅使用最多四个标量求解器约束。 | |
单向摩擦类型 | 库仑摩擦模型的简化版本,其中,给定接触点的摩擦力作用在接触法线的交替切向方向上。这比补丁摩擦需要更多的求解器迭代,但不如双向模型准确。为了使关节体可以使用此摩擦类型,请将求解器类型设置为时间高斯赛德尔。 | |
双向摩擦类型 | 类似于单向模型,但同时作用于两个切向方向上的摩擦力。这需要更多的求解器迭代,但更准确。对于具有许多接触点的场景来说,成本更高,因为它作用于每个接触点。为了使关节体可以使用此摩擦类型,请将求解器类型设置为时间高斯赛德尔。 | |
启用增强确定性 | 场景中的模拟一致,无论存在哪些 actor,前提是游戏以确定性顺序插入 actor。此模式牺牲了一些性能以确保这种额外的确定性。 | |
启用统一高度图 | 启用此选项以像处理网格碰撞一样处理地形碰撞。 | |
改进的补丁摩擦 | 优化补丁摩擦,以使静态摩擦和动态摩擦不会超过分析结果。此属性默认情况下处于停用状态。 | |
求解器类型 | 选择要用于仿真的 PhysX 求解器类型。 | |
投影高斯赛德尔 | 默认的 PhysX 求解器。 | |
时间高斯赛德尔 | 此求解器提供了更好的收敛性和更好的高质量比处理,最大限度地减少了校正穿透时引入的能量,并提高了关节抵抗过度拉伸的能力。通常,当您在使用默认求解器进行模拟时遇到一些不稳定的行为时,它会有所帮助。 | |
默认最大角速度 | 设置所有动态刚体游戏对象的项目范围默认最大角速度(以弧度为单位)。默认值为 50。 | |
暂存缓冲区块数 | 为物理系统分配给临时分配的 16KB 内存块的数量。默认值为 4,它提供了一个 64KB 的缓冲区。 | |
快速运动阈值 | 基于扫描的 CCD 算法用来确定快速移动的物体在本帧移动与否的线性运动阈值。必须大于零。默认值为无穷大,表示值为 3.402823e+38。 |
布料选项卡中的设置仅适用于布料物理。
属性 | 功能 |
---|---|
布料重力 | 设置每个轴上布料组件的重力值。默认情况下,X 设置为 0,Y 设置为 -9.81,Z 设置为 0。 |
启用布料相互碰撞 | 启用布料粒子相互碰撞的能力。有关详细信息,请参阅布料:自碰撞和相互碰撞。 |
距离 | 定义每个相互碰撞的布料粒子周围球体的直径(以世界单位为单位)。Unity 确保这些球体在模拟过程中不会重叠。距离应小于配置中两个粒子之间的最小距离。如果距离更大,布料碰撞可能会违反距离约束,导致抖动。此值默认设置为 0.1。 |
刚度 | 定义当相互碰撞的布料粒子比距离值更近时,它们之间的分离力的强度。该值是 PhysX 乘以分离力的系数;布料求解器随后根据您提供的该值计算刚度。此值默认设置为 0.2。 |
PhysicsManager