在Unity3D中使用Farseer / Box2D的DebugDraw的最佳方法?

时间:2019-02-08 17:42:02

标签: unity3d box2d

Box2D / Farseer 2D物理学有一个有用的组件,它使用图元(线,多边形,填充,颜色)绘制物理学世界的简单表示。这是一个示例:

enter image description here

在Unity3D中完成此操作的最佳方法是什么?有没有一种简单的方法可以渲染带有填充,线,点等的多边形?如果是这样,我可以使用Unity的API来实现DebugDraw的接口,但是我很难找到如何使用Unity来实现这种原始渲染的方法。

我知道它会在3D空间中,但我只会将一个轴归零,并基本上将其用作2D。

1 个答案:

答案 0 :(得分:1)

如果您的意思是实际上只是在SceneView的{​​{1}}中不是中显示了 debug 框,则可以使用Gizmos.DrawWireCube

GameView

仅当选择了GameObject时,您才能使用void OnDrawGizmos() { //store original gizmo color var color = Gizmos.color; // store original matrix var matrix = Gizmos.matrix; // set gizmo to local space Gizmos.matrix = transform.localToWorldMatrix; // Draw a yellow cube at the transform position Gizmos.color = Color.yellow; // here set the scale e.g. for a "almost" 2d box simply use a very small z value Gizmos.DrawWireCube(transform.position, new Vector3(0.5f, 0.2f, 0.001f)); // restor matrix Gizmos.matrix = matrix; // restore color Gizmos.color = color; } 来显示Gizmo

enter image description here

您还可以通过将框的大小扩大到检查器上来扩展它

OnDrawGizmosSelected

并使用

[SerializeField] private Vector3 _boxScale;