Лучший способ использовать DebugDraw Farseer / Box2D в Unity3D? - PullRequest
0 голосов
/ 08 февраля 2019

Box2D / Farseer 2D физика имеет полезный компонент, который рисует простое представление о мире физики, используя примитивы (линии, многоугольники, заливки, цвета).Вот пример:

enter image description here

Какой лучший способ сделать это в Unity3D?Есть ли простой способ визуализации полигонов с заливкой, линиями, точками и т. Д.?Если это так, я мог бы реализовать интерфейс DebugDraw с Unity API, но у меня возникли проблемы с поиском, как реализовать примитивный рендеринг, как это с Unity.

Я понимаю, что это будет в трехмерном пространстве, но я 'Я просто обнулю одну ось и использую ее в основном как 2D.

1 Ответ

0 голосов
/ 08 февраля 2019

Если вы имеете в виду поле debug , только что отображенное в SceneView , а не в GameView, вы можете использовать Gizmos.DrawWireCube

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;
}

вы можете использовать OnDrawGizmosSelected, чтобы показать Гизмо, только если выбран GameObject

enter image description here

, вы также можете расширить это наполучить размер коробки над инспектором

[SerializeField] private Vector3 _boxScale;

и использовать

Gizmos.DrawWireCube(transform.position, _boxScale);
...