相信大家都会遇到这样的需求,希望能够在编辑器中看到物体的碰撞体网格。我们已经在Unity中实现了这样的编辑器工具,本文将由Unity官方工程师Morten Skaaning为大家介绍详细内容。

当Render网格与碰撞体网格不同步时,想要快速预览场景中的碰撞体,并决定是否有些不必要的碰撞就变得很麻烦。所以我们制作了物理碰撞体调试视图,帮助大家快速查看各层的碰撞体网格以发现问题所在。

该工具还支持快速选中带有指定碰撞体的游戏对象,来进一步查看或修改。此外还可以高亮模拟刚体以调试物理性能问题。

此工具基于Unity 5.3.4p4构建,所以对于绝大多数用户来说都是稳定的。请下载此开发中的编辑器版本,使用该工具并告知我们可能暂未考虑的功能需求及改善。我们暂时不确定该工具是否会出现在正式版中,如果会,那我们也将确保该工具能兼容之前的Unity版本。

下载地址(请回复本帖哦):
davinci8,如果您要查看本帖隐藏内容请回复

该工具检视面板示意图如下:

215226upzeueo46ufhhenf.png

场景视图如下:

215227l7iizl7l8xlyyidg.png

下面是一些关于该工具功能扩展的想法:

选择单独的Collider组件 支持用户按层来指定颜色 显示关联点 显示测试射线或清除重叠部分 显示更多信息,如带有碰撞体的层等 像Maya中那样通过在视点增加光源进行着色,以改善曲面的显示效果 支持时间轴记录和清除 支持网络 为用户提供更多的渲染接口 显示当前选中的刚体会碰撞到的所有碰撞体 显示当前选中碰撞体将发送或接收哪些Trigger或Collider的消息

C# API代码如下:

[C#] 纯文本查看 复制代码public class PhysicsVisualizationSettings { public static void Reset (); // properties public static bool showCollisionGeometry; public static bool enableMouseSelect; public static bool useSceneCam; public static float viewDistance; public static int terrainTilesMax; public static bool forceOverdraw; public static bool showStaticColliders; public static bool showTriggers; public static bool showRigidbodies; public static Color staticColor; public static Color rigidbodyColor; public static Color kinematicColor; public static float baseAlpha; // (1 - transparency) public static bool devOptions; public static int dirtyCount; public static bool GetShowCollisionLayer (int layer); public static void SetShowCollisionLayer (int layer, bool show); public static void UpdateMouseHighlight (Vector2 pos); public static void ClearMouseHighlight (); public static bool HasMouseHighlight (); }

注意

以上API只可用于编辑器中,不能用于独立的播放器 类名将来可能会从“PhysicsVisualizationSettings”变为“Physics.DebugVisualization”


限制条件

暂不支持Cloth、Joints以及WheelColliders 多次反复启用或禁用TerrainCollider会导致射线随机选取失败 当使用多场景编辑时,只有最后一个场景视图能有效选定碰撞体 当拖拽Tree Collider到地形时不会单独高亮这一棵树 不支持矩形选中


关于该工具就介绍到这里,如有疑问请回帖。



Unity, Editor, Physics Debug锐亚教育

锐亚教育 锐亚科技 unity unity教程