Как создать линию, используя две точки Vector3 в единстве?

Я знаю, что существуют некоторые функции, такие как lineRenderer и т. д., но я хочу создать прямую линию в сцене, используя две точки (в форме Vector3). Я не хочу рисовать линию с помощью какой-либо клавиши или мыши, я просто хочу видеть линию в сцене, когда я запускаю какое-то событие или сразу после нажатия кнопки воспроизведения.

Может кто-нибудь помочь мне?


person Harry Xiong    schedule 07.10.2013    source источник


Ответы (4)


Хорошо, я понял это, используя LineRenderer следующим образом:

var line: GameObject=GameObject.Find("/LineRenderer");
fence = Instantiate(line,Pos,Rotation);
fence.setPosition(0,p1);
fence.setPosition(1,p2);

Спасибо за все ваши ответы выше

person Harry Xiong    schedule 08.10.2013

Если вам нужна линия в 3D-пространстве, попробуйте создать LineRenderer, образец здесь: http://rockonflash.wordpress.com/2010/04/17/how-to-do-lasers-in-unity3d/

документы здесь: http://docs.unity3d.com/Documentation//Components/class-LineRenderer.html

Для 2D-линии (onGUI) попробуйте:

 function OnGUI () {
    GUIUtility.ScaleAroundPivot (Vector2(0.5, 0.5), Vector2(328.0, 328.0));
    GUI.Label (Rect (200, 200, 256, 256), textureToDisplay);
 }

в этом обсуждении представлены и другие варианты: http://forum.unity3d.com/threads/17066-How-to-draw-a-GUI-2D-quot-line-quot

person Stanley    schedule 07.10.2013
comment
Если вы хотите использовать графический интерфейс для представления линии в вашей сцене, вы всегда можете использовать [ guiRect.x = Camera.main.WorldToScreenPoint(positionA).x; ] - person Thomas Ingham; 08.10.2013

Другой вариант, который может подойти для ваших нужд, — это использовать гизмо в вашей сцене. Поскольку Gizmos применяются в отдельной матрице, с ними можно делать много забавных вещей.

Основа:

void OnDrawGizmos ()
{
    Gizmos.color = new Color(1f, 0f, 0f, 0.5f);
    Gizmos.DrawLine(positionA, positionB);
}

Доставит тебя туда. Однако в последнее время я довольно часто использую смещение матрицы gizmo, а затем визуализирую все в единичном пространстве.

void OnDrawGizmos ()
{
        Matrix4x4 rotationMatrix = Matrix4x4.TRS(transform.position, transform.rotation, positionA - positionB);
        Gizmos.matrix = rotationMatrix;
        Gizmos.DrawWriteCube(Vector3.zero, Vector3.one);
}

Оба варианта забавны, но второй экземпляр может помочь вам позже, когда вы начнете пытаться представить контент, который повернут или должен быть смещен каким-либо иным образом.

person Thomas Ingham    schedule 08.10.2013
comment
Я думаю, что Gizmoz не видны в реальной выпущенной игре. - person Javasamurai; 10.08.2015

person    schedule
comment
lineRenderer.useWorldSpace = true; действительно полезно. - person Dadu Khan; 03.03.2021