UPL7-1——Physics Debugger
UPL7-1——Physics Debugger
Physics Debugger
Physics Debugger 是 Unity 提供的一个 物理系统可视化调试工具
它不会改变场景中的物理行为,而是通过图形化的方式把:
- 碰撞体(Collider)
- 刚体(Rigidbody)
- 触发器(Trigger)
- 关节(Joint)
- 接触点(Contact)
- 射线检测(Raycast)
- 范围检测(Overlap)
等信息直观显示在 Scene 视图里
帮助开发者快速定位物理相关的问题,它严格来说并不是性能检测工具,而是用于定位物理碰撞表现问题的,比如:
- 定位为什么碰撞没有触发
- 为什么子弹打不中敌人
- 关节为什么拉扯异常
等等问题的
点击工具栏 ——> Window ——> Analysis ——> Physics Debugger 即可打开相应窗口:

初始 Physics Debug 窗口

物理调试窗口中,主要由五部分组成:
-
Info(信息)
显示被选中物理对象(通常是
Rigidbody)的运行时物理属性
用途:检查某个物体在运行时的物理状态是否正常,比如为什么这个刚体不动、为什么它抖动等等
-
Filtering(过滤)
控制哪些物理对象会在 Scene 视图中显示
用途:当场景里物体太多时,只显示与调试相关的碰撞体/刚体,避免视图杂乱
-
Rendering(渲染)
调整物理调试可视化的显示方式
用途:让调试显示更清晰。例如在复杂场景中,给不同对象分配不同颜色
-
Contacts(联系方式)
显示物体之间的物理接触信息
用途:调试 碰撞为什么没有触发、为什么会穿模、为什么弹力怪异,能看到碰撞点在哪里、法线指向哪里
-
Queries(查询)
可视化物理查询操作
用途:调试射线、范围检测逻辑是否正常,比如子弹打不中敌人,是因为Raycast没命中还是方向错了的问题
调整了上边页签的数值后,点击右侧的 Reset 即可重置参数
打开 Physics Debugger 后,Scene 中会出现 Physics Debug 的小窗口,它是 Scene 窗口里 Physics Debugger 的浮动工具栏
它提供了几个快速开关,主要用于控制物理调试可视化的显示内容

-
Collision Geometry(碰撞几何体)
作用:是否在 Scene 视图中绘制 碰撞几何体(Collider) 的可视化,勾选时会显示 各种碰撞器 的线框和形状轮廓
主要用于检查物体的 物理碰撞体和视觉模型是否对齐,排查看起来模型碰到了,但物理没碰到的问题
-
Mouse Select(鼠标选择)
作用:勾选后,你用鼠标点击某个物体时,会在 Scene 视图里给出 颜色高亮,方便我们通过鼠标选择更直观的观察对象

Info(信息)页签
显示被选中物理对象(通常是 Rigidbody)的运行时物理属性
用途:检查某个物体在运行时的物理状态是否正常,比如为什么这个刚体不动、为什么它抖动等等
当你未选择任何对象时会显示:

当没有选择任何对象时会提示: 选择一个带有
Rigidbody(刚体)或ArticulationBody(关节体)组件的GameObject,以显示它的相关信息

-
Number of items per row(每行项目数): 设置调试信息在窗口中每行显示几个对象
-
Tracked objects(追踪对象): 当前正在跟踪的物体数量
点击 Clear locked objects 会将 Info 页签内当前锁定显示的对象清空
-
GameObject(游戏对象): 被跟踪的具体对象,会显示对象名
-
Draw Gizmos for(绘制工具): 决定在场景里为该对象绘制哪类辅助图形

-
None: 不绘制额外辅助图形,只显示普通的物理可视化
-
Center Of Mass(质心): 会在 Scene 视图中绘制一个小标记(通常是球或者十字),表示刚体的 质心位置
质心不一定在几何中心,比如带有偏移 Collider 的物体,它的质心就可能偏移
用于调试物体的旋转行为。刚体绕质心旋转,如果质心位置偏移不对,可能导致旋转怪异
-
Inertia Tensor(惯性张量): 会绘制一个类似“椭球”或三根轴线的图形,表示刚体的 惯性张量方向和大小
惯性张量描述了物体对不同方向旋转的“抗拒程度”
用于调试物体旋转时的动力学。如果你发现物体某个方向特别难旋转,可以用这个 Gizmo 检查惯性张量是不是和物体几何不匹配
长轴易转,短轴难转
-
-
速度相关(Speed)
- Speed(速度): 物体的瞬时速度大小,单位为 m/s
- Velocity (X/Y/Z)(速度): 物体在世界坐标下的方向速度向量
- Angular Velocity (X/Y/Z)(角速度): 物体绕个轴的角速度向量,单位是 rad/s
-
惯性张量相关(Inertia Tensor 衡量扭动物体有多难)
- Inertia Tensor (X/Y/Z)(惯性张量): 刚体在本地坐标系下的惯性张量分量,用来描述物体对旋转加速度的阻抗(系统对外部作用的反抗程度)。
- Inertia Tensor Rotation (X/Y/Z)(惯性张量旋转): 惯性张量的旋转方向,用四元数或欧拉角表示,定义了惯性张量相对刚体本地坐标的旋转。
-
质心相关(Mass)
- Local Center of Mass (X/Y/Z)(局部质心): 刚体在自身局部坐标系下的质心位置。
- World Center of Mass (X/Y/Z)(世界质心): 刚体在世界坐标系下的质心位置。
-
休眠状态和阈值(Sleep)
-
Sleep State(休眠状态): 刚体当前是否处于睡眠状态
- Asleep = 静止且不参与物理模拟
- Awake = 活跃
-
Sleep Threshold(休眠阈值): 当物体速度低于该阈值时,会进入睡眠状态
-
-
限制参数
- Max Linear Velocity:最大线性速度上限,超过会被截断,防止数值过大导致模拟不稳定。
- Max Angular Velocity: 最大角速度上限
-
求解器参数(Solver)
- Solver Iterations(求解器迭代): 物理解算迭代次数(用于处理碰撞和约束)。 数值越大精度越高,但性能开销更大。
- Solver Velocity Iteration(求解器速度迭代): 解算速度相关的迭代次数(影响摩擦、反弹等效果的精度)。
调试建议:
-
确定物体为啥不动
主要看 Velocity(速度)、Sleep State(休眠状态)
-
排查旋转异常
主要看 Angular Velocity(角速度)、Inertia Tensor (惯性张量)
-
排查穿透或弹力怪异
主要看 Solver Iterations(求解器迭代)和下文的 Contacts(联系页签) 等等
Filtering(过滤)页签
控制哪些物理对象会在 Scene 视图中显示
用途:当场景里物体太多时,只显示与调试相关的碰撞体/刚体,避免视图杂乱

-
Show Physics Scene(显示物理场景): 选择要调试的 物理场景
Unity 支持多物理场景(比如多线程模拟、子场景),这里可以切换
-
Show Unity Scene(显示Unity场景): 选择对应的 Unity 场景(Scene)
通常一个物理场景对应一个 Unity 场景
-
Show Layers(显示层级): 根据 Layer 来过滤,只显示特定 Layer 的物理对象
例如只显示 Player、Enemy
-
按物体类别过滤
-
Show Static Colliders(显示静态碰撞器): 显示静态碰撞体
即显示无
Rigidbody 的Collider,常见于地形、建筑 -
Show Triggers(显示触发器): 显示触发器
Collider显示
isTrigger = true的碰撞体 -
Show Rigidbodies(显示刚体): 显示所有刚体
显示带
Rigidbody的物体 -
Show Kinematic Bodies(显示运动学刚体): 显示运动学刚体
显示
isKinematic = true 的Rigidbody,
它们不会受物理模拟影响,但能驱动物理 -
Show Articulation Bodies(显示关节体): 显示
ArticulationBody组件
ArticulationBody主要用于机器人/机械臂模拟 -
Show Sleeping Bodies(显示休眠的刚体): 显示 睡眠中的刚体
Rigidbody处于 Sleep 状态,不再参与模拟
-
-
按碰撞体类型过滤(Collider Types)
- Show BoxColliders(显示盒装碰撞器)
- Show SphereColliders(显示球状碰撞器)
- Show CapsuleColliders(显示胶囊碰撞器)
- Show MeshColliders (convex)(显示凸型的网格碰撞器)
- Show MeshColliders (concave)(显示凹型的网格碰撞器,只能用于静态物体)
- Show TerrainColliders(显示地形碰撞体)
-
Show None(一键取消选中所有,隐藏所有物理对象)
-
Show All(一键显示所有物理对象)
调试建议: 这个界面就是一个 物理可视化过滤器,让我们在复杂场景里筛选出想调试的部分
Rendering(渲染)页签
调整物理调试可视化的显示方式
用途:让调试显示更清晰。例如在复杂场景中,给不同对象分配不同颜色

-
颜色设置相关
-
Static Colliders(静态碰撞器): 设置今天碰撞体显示颜色,即无刚体的碰撞器
-
Triggers: 设置触发器碰撞体(
isTrigger = true)显示颜色 -
Rigidbodies: 设置普通刚体显示颜色
-
Kinematic Bodies: 设置运动学刚体显示颜色
显示
isKinematic = true 的Rigidbody,
它们不会受物理模拟影响,但能驱动物理 -
Articulation Bodies: 设置关节刚体
ArticulationBody显示颜色
ArticulationBody主要用于机器人/机械臂模拟 -
Sleeping Bodies: 设置处于 Sleep 状态的刚体的显示颜色
-
-
渲染参数
-
Variation(变化):给不同物体随机加点颜色偏移,数值越大,颜色差异越明显
避免一堆同类物体颜色完全一样
-
Transparency(透明度): 控制物体调试显示的透明度
0 = 全不透明,1 = 全透明,一般调中间值方便观察叠加物体
-
Force Overdraw(强制叠加绘制): 如果勾选,会强制所有物体在 Scene 视图里渲染出来,即使有被遮挡。 类似“透视模式”,避免某些物体被挡住看不到。
-
View Distance(视距): 可视化的最大显示距离
超过这个距离的物体不会绘制 Gizmo,可以减少 Scene 杂乱和性能开销
-
Terrain Tiles Max(地形瓦片绘制最大值): 针对 Terrain Collider 的优化,限制一次最多绘制多少个地形瓦片
-
-
Gizmos settings(绘制小工具设置)
主要影响 Info 页签设置的 Draw Gizmos for 绘制的内容
- Constant screen size(Constant screen size): 如果勾选,物体 Gizmo(如质心点、碰撞体线框)会在 Scene 视图里保持固定屏幕大小,而不是随镜头远近缩放。 常用于调试小物体时避免 Gizmo 太小看不清
- Inertia Tensor scale(惯性张量比例): 控制显示的惯性张量 Gizmo 的缩放 例如把它调大,更容易看清楚刚体的主惯性轴方向
调试建议: 这个界面就是一个 调试工具颜色设置界面,可以让我们自定义颜色、细节显示,方便我们更清楚直观的观察物理系统对象的变化
Contacts(联系方式)页签
显示物体之间的物理接触信息
用途:调试 碰撞为什么没有触发、为什么会穿模、为什么弹力怪异,能看到碰撞点在哪里、法线指向哪里


-
接触点显示信息相关
-
Show Contacts(显示接触信息): 总开关
是否在 Scene 里显示物体的接触点,开启后,才可以详细设置下方的勾选项
-
Show All Contacts(显示所有接触信息): 勾选后,会显示所有接触点(有时两个物体接触可能有多个接触点,比如箱子放在地面上)

-
Show Impulse(显示接触点冲量): 显示物理引擎在这个点施加了多大的反作用力 可用来调试反弹力度、碰撞是否过强/过弱

-
Show Separation(显示接触点分离向量): 显示物体相互“推开”的方向和距离。 可用来调试物体是否正确分离,避免穿透
-
Use Filtering settings(使用过滤设置): 如果勾选,就会应用 Filtering 页签里的过滤条件(比如只显示某个 Layer 的接触点) 不勾选的话,就显示所有接触点
-
-
接触点颜色设置
- Use varied colors(使用多种颜色): 是否使用随机颜色来区分不同接触点,避免所有接触点看起来一样
- Contact color(普通接触点的颜色设置)
- Contact separation color(接触点分离向量颜色设置)
- Contact impulse color(碰撞冲量颜色设置)
调试建议:接触页签主要是让我们在Scene窗口中可以清楚的看到:
- 物体之间到底哪些点发生了接触
- 接触点的碰撞强度
- 接触点的分离方向和距离
- 用不同颜色区分不同类型的信息
等等
Queries(查询)页签
可视化物理查询操作
用途:调试射线、范围检测逻辑是否正常,比如子弹打不中敌人,是因为 Raycast 没命中还是方向错了的问题

-
Show queries(显示物理查询信息): 总开关
勾选后,Unity 会把你运行时的物理查询(Raycast、Overlap 等)绘制到 Scene 视图里
-
Query color(查询颜色): 用来绘制查询的 调试图形 的颜色 比如射线 Raycast 的线段、SphereOverlap 的球体边框,会用这里的颜色显示
-
Show shapes 显示形状设置
- Sphere 显示球体查询(范围检测)
- Box 显示盒装查询(范围检测)
- Capsule 显示胶囊体查询(范围检测)
- Ray 显示射线检测
-
Show types 显示类型设置
- Overlay 会显示 Overlay 类型的查询 比如
Physics.OverlapSphere - Check 会显示 Check 类型的查询(返回
bool 值,判断是否有物体与形状相交) 比如Physics.CheckBox函数 - Cast 会显示 Cast 类型的查询 比如
Physics.Raycast函数
- Overlay 会显示 Overlay 类型的查询 比如
-
Max Queries: 最多显示多少条查询结果
-
Show None/All: 一键隐藏/显示 所有
调试建议: Queries 页签 主要用于 调试物理检测逻辑
- 你可以直观看到 射线、球体、盒子、胶囊体检测的范围和方向 排查是否是方法调用存在问题
- 判断为什么子弹没打中敌人、为什么 Overlap 检测不到碰撞体
- 控制显示数量,避免画面过载 等等
