Come creare una linea con due Vector3 punti in unità?

So che esistono alcune funzioni come lineRenderer ecc, ma voglio creare una linea retta in scena con due punti(in Vector3 forma). Non voglio tracciare la linea utilizzando un qualsiasi tasto o con il mouse, voglio solo vedere la linea in scena quando I trigger qualche evento o subito dopo cliccare il pulsante play.

Qualcuno mi può aiutare?

 

3 Replies
  1. 0

    Se si desidera una linea nello spazio 3D, prova a creare un LineRenderer, campione qui: http://rockonflash.wordpress.com/2010/04/17/how-to-do-lasers-in-unity3d/

    documentazione qui:
    http://docs.unity3d.com/Documentation//Components/class-LineRenderer.html

    Per una linea 2D (onGUI), provare:

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

    ci sono altre opzioni presentate in questa discussione:
    http://forum.unity3d.com/threads/17066-How-to-draw-a-GUI-2D-quot-line-quot

    • Se si desidera utilizzare l’interfaccia grafica per rappresentare una linea in scena puoi sempre utilizzare [ guiRect.x = Fotocamera.principale.WorldToScreenPoint(positionA).x; ]
  2. 0

    Un’altra opzione che potrebbe funzionare per le vostre esigenze è quello di utilizzare un aggeggio in scena. Perché Aggeggi sono applicati in maniera separata matrice si può fare un sacco di cose divertenti con loro.

    Base:

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

    Si arriva lì. Qualcosa che ho usato per un po ‘ ultimamente, tuttavia, è quello di compensare il gizmo matrice, invece, e quindi rendere il tutto in una unità di cat.

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

    Entrambi sono divertenti, ma la seconda istanza può aiutare più tardi, quando si avvia cercando di rappresentare il contenuto che è ruotato o deve essere altrimenti offset.

    • Penso Gizmoz non sono visibili nell’attuale rilasciato gioco.
  3. 0

    Ok, ho capito utilizzando LineRenderer come questo:

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

    Grazie per tutte le risposte di cui sopra

Lascia un commento