Physics 2D 参考
Learn about Physics 2D settings.
阅读时间14 分钟最后更新于 1 个月前
以下 Project 设置用于管理 Physics 2D 的全局设置,这些设置定义 Unity 物理系统中 2D 游戏对象的物理模拟精度限制。更准确的模拟需要更多的处理开销,这些设置可用于在精度和最适合项目的性能之间进行权衡调整。
要打开 Physics 2D 项目设置窗口,请选择编辑 (Edit) > 项目设置… (Project Settings…) > 2D 物理 (Physics 2D) 来管理 2D 物理 (Physics 2D) 的全局项目设置
**注意:**要改为管理 3D 物理的全局设置,请参阅物理项目设置参考页面。

Physics 2D 检视面板设置
常规设置 (General Settings) 选项卡
以下是 Physics 2D 管理器窗口的常规设置 (General Settings) 选项卡中的可用属性。
属性 | 功能 | |
|---|---|---|
| Gravity | 设置应用于所有 2D 刚体游戏对象的重力大小。通常,仅为 y 轴的负方向设置重力。 | |
| Default Material | 设置在没有为单独 2D 碰撞体分配材质的情况下需要使用的物理材质 2D。 | |
| Velocity Iterations | 设置物理系统为处理速度影响而进行的迭代次数。数字越大,物理计算越准确,但编辑器需要更多 CPU 时间。 | |
| Position Iterations | 设置物理系统为处理位置变化而进行的迭代次数。数字越大,物理计算越准确,但编辑器也需要更多 CPU 时间。 | |
| Bounce Threshold | 设置弹性碰撞的阈值。Unity 将相对线速度低于此阈值的任何碰撞视为非弹性碰撞,因此不会发生反弹。 | |
| Max Linear Correction | 设置解算约束时使用的最大线性位置校正(范围从 0.0001 到 1000000)。这有助于防止过冲。 | |
| Max Angular Correction | 设置解算约束时使用的最大角度校正(范围从 0.0001 到 1000000)。这有助于防止过冲。 | |
| Max Translation Speed | 设置任何物理更新期间 2D 刚体游戏对象的最大线性速度。 | |
| Max Rotation Speed | 设置任何物理更新期间 2D 刚体游戏对象的最大旋转速度。 | |
| Baumgarte Scale | 设置用于确定 Unity 解算碰撞重叠速度的缩放因子。 | |
| Baumgarte Time of Impact Scale | 设置用于确定 Unity 解算撞击时间重叠速度的缩放因子。 | |
| Time to Sleep | 设置在 2D 刚体停止移动之后而进入睡眠状态之前必须经过的时间(以秒为单位)。 | |
| Linear Sleep Tolerance | 设置线性速度,在低于该速度时,2D 刚体在经过 Time to Sleep 过后进入睡眠状态。 | |
| Angular Sleep Tolerance | 设置旋转速度,在低于该速度时,2D 刚体在经过 Time to Sleep 过后进入睡眠状态。 | |
| Default Contact Offset | 将碰撞体的接近距离值设置为相接触,即使它们实际上没有接触。距离小于其 | |
| Simulation Mode | 选择 Unity 何时执行 2D 物理模拟。 | |
| Fixed Update | 选择此选项可让 Unity 在调用 MonoBehaviour.FixedUpdate 后立即执行物理模拟。 | |
| Update | 选择此选项可让 Unity 在调用 MonoBehaviour.Update 后立即执行物理模拟。 选择此模式时,将显示其他属性。 | |
| Script | 选择此选项可通过 Physics2D.Simulate 手动执行物理模拟。 | |
| Simulation Layers | 选择当模拟模式 (Simulation Mode) 设置为固定更新 (FixedUpdate) 或更新 (Update) 时 Unity 模拟的层。 默认选择所有内容 (Everything) 选项,该选项会自动选择所有层并将所有层包含在物理模拟中。您可以选择要包含在模拟中的特定层,这样一来,Unity 只会模拟这些选定层上的 Rigidbody2D、关节、效应器以及 Collider2D 之间的接触。 | |
| Queries Hit Triggers | 如果希望让标记为触发器 (Triggers) 的 2D 碰撞体在任何物理查询(如线性投射或射线投射)与它们相交时返回命中,请启用此选项。默认启用。 | |
| Queries Start In Colliders | 如果希望使 2D 碰撞体中启动的物理查询检测是在哪个碰撞体中开始的,请启用此选项。 | |
| Callbacks On Disable | 启用此选项可在禁用具有接触点的碰撞体时生成碰撞回调。 | |
| Reuse Collision Callbacks | 启用此设置将使物理系统对所有碰撞回调重用单个 Collision2D 实例。禁用此设置将使物理系统为每个碰撞回调创建一个新的 Collision2D 实例。 | |
| Auto Sync Transforms | 启用此选项可自动将变换更改与物理系统同步。 | |
| Gizmos | 选择要在编辑器中绘制的物理 2D 辅助图标的类型。可以选择多个选项。 | |
| Nothing | 选择此选项可取消选择每个选项。不会绘制任何物理 2D 辅助图标。 | |
| Everything | 选择此选项可选择每个选项。 | |
| All Colliders | 选择此选项可绘制所有碰撞体,而不必在层级试图窗口中选择它们。 | |
| Colliders Outlined | 选择此选项可使用轮廓绘制碰撞体(可在 2D 物理偏好设置 (2D Physics Preference) 中自定义轮廓的颜色)。 | |
| Colliders Filled | 选择此选项可使用在 2D 物理偏好设置 (2D Physics Preference) 中指定的填充颜色绘制所有碰撞体。 | |
| Colliders Sleeping | 选择此选项可使用在 2D 物理偏好设置 (2D Physics Preference) 中指定的唤醒 (Awake) 或睡眠 (Asleep) 颜色绘制碰撞体,以显示它们附加到的 2D 刚体何时进入睡眠状态。 | |
| Collider Contacts | 选择此选项可使碰撞体接触显示为方向箭头,其从接触法线方向的接触点开始。您可以在 2D 物理偏好设置 (2D Physics Preference) 中指定箭头的接触颜色。 | |
| Collider Bounds | 选择此选项可为碰撞体创建的所有 PhysicsShape2D 绘制碰撞体边界。边界是轴对齐的包围盒 (Axis-Aligned Bounding Box, AABB)。 | |
| Multithreading | 展开此选项可调整多线程设置。有关每个属性的信息,请参阅多线程。 |
Simulation Mode:Update
仅当为模拟模式 (Simulation Mode) 选择更新 (Update) 或脚本 (Script) 时,以下属性才可见。

属性 | 功能 |
|---|---|
| Use Sub Stepping | 启用此属性可以让编辑器在执行模拟步骤期间使用模拟子步进。 |
| Use Sub Step Count | 启用此属性可以让编辑器计算所有模拟子步骤的接触。这样可为每个子步骤提供更精确的模拟,但会降低性能。禁用此属性以只计算第一个模拟子步骤的接触。 |
| Max Sub Step Count | 设置当模拟子步进已启用并且正在运行时每帧允许的最大模拟子步长数。这也将限制编辑器在子步进上花费的时间。 |
| Min Sub Step FPS | 设置编辑器开始使用子步进之前模拟步骤允许的最小每秒帧数。当前帧率低于此值时,如果启用了使用子步进 (Use Sub Stepping),则编辑器将使用模拟子步进。 |
Multithreading
多线程 (Multithreading) 部分中的设置允许您使用 C# 作业系统 (C# Job System) 来配置多线程物理设置。

多线程 (Multithreading) 设置处于展开状态。
属性 | 功能 |
|---|---|
| Use Multithreading | 启用此选项会使用作业系统执行模拟步骤,并使用这些选项中的其余部分控制如何实现该功能。 |
| Use Consistency Sorting | 如果保持一致的处理顺序对于模拟十分重要,请启用此选项。 在多个 CPU 线程中执行模拟步骤会生成单独的数据批次。处理这些单独的批次会降低处理顺序的确定性,不过会生成更快的结果。 |
| Interpolation Poses Per Job | 设置在每个模拟作业中进行插值的最小 2D 刚体 (Rigidbody 2D) 对象数。 |
| New Contacts Per Job | 设置在每个模拟作业中要查找的最小新接触数。 |
| Collide Contacts Per Job | 设置在每个模拟作业中要碰撞的最小接触数。 |
| Clear Flags Per Job | 设置在每个模拟作业中要清除的最小标志数。 |
| Clear Body Forces Per Job | 设置在每个模拟作业中要清除的最小实体数。 |
| Sync Discrete Fixtures Per Job | 设置在每个模拟作业的离散孤岛解算过程中,要在粗筛阶段中同步的最小灯具数。 |
| Sync Continuous Fixtures Per Job | 设置在每个模拟作业的连续孤岛解算过程中,要在粗筛阶段中同步的最小灯具数。 |
| Find Nearest Contacts Per Job | 设置在每个模拟作业中要查找的最小最近接触数。 |
| Update Trigger Contacts Per Job | 设置在每个模拟作业中要更新的最小触发器接触数。 |
| Island Solver Cost Threshold | 设置在离散孤岛解算过程中某个孤岛中所有实体、接触和关节的最小阈值成本。 |
| Island Solver Body Cost Scale | 设置在离散孤岛解算过程中每个实体的成本规模。 |
| Island Solver Contact Cost Scale | 设置在离散孤岛解算过程中每个接触的成本规模。 |
| Island Solver Joint Cost Scale | 设置在离散孤岛解算过程中每个关节的成本规模。 |
| Island Solver Bodies Per Job | 设置在执行孤岛解算时在每个模拟作业中要解算的最小实体数。 |
| Island Solver Contacts Per Job | 设置在执行孤岛解算时在每个模拟作业中要解算的最小接触数。 |
层碰撞矩阵 (Layer Collision Matrix) 选项卡
层碰撞矩阵 (Layer Collision Matrix) 选项卡设置根据分配给游戏对象的层来控制碰撞体(附加到不同的 2D 刚体)是否可以相互接触。该矩阵显示每个层与每个其他层之间的对比,允许您选择哪些特定层可与另一个层接触。

层碰撞矩阵 (Layer Collision Matrix) 选项卡。
两个层之间的交点处的复选标记表示允许这两个层之间的接触,而未选中的复选框表示绝不允许这两个层之间的接触。将鼠标悬停在层的名称或复选框上时,其行和列会突出显示,以便于查看其影响哪些层。
提示:要优化以获得尽可能最佳的性能,应确保仅选择要与其他层接触的特定层并禁用所有其他不必要的接触,从而仅选择最小的潜在接触数。为了帮助解决此问题,可以选择全部禁用 (Disable All) 或全部启用 (Enable All) 来快速选择或取消选择所有选项,然后选择特定的层。