2017-04-21 1 views
0

Die einfache Art und Weise Spieler vordere Position zu bestimmtem AbstandPosition vom Spieler nach vorne zu konstantem Abstand

 Vectro3 forward = player.transform.forward * distance; 
    Vector3 newPlayerFronPosition= player.transform.position + new Vector3(forward.x, forward.y, forward.z); 
    newPlayerFronPosition= new Vector3(newPlayerFronPosition.x, newPlayerFronPosition.y - 4f, newPlayerFronPosition.z); 
    navigationCanvas.transform.position = newPlayerFronPosition; 
    navigationCanvas.transform.rotation = camRotationToWatch.transform.rotation; 

sein tatsächlich funktioniert gut, aber das Problem ist, zu erhalten, wie meine Spieler unten die navCanvas nach oben oder ver nahe erscheinen worden zu meinem Spieler. Wie kann man die ganze Zeit die richtige Distanz finden? dass, egal Spieler Blick oben oder unten die navcanvas Anzeige bei specfic Abstand. (Position)

disatnceUICam = Vector3.Distance(newPlayerFronPosition, player.transform.position); 

Ich loggte auch den Abstand und überraschend es der Abstand ändert, wenn ich oder nach unten bewegte oben. es ändert sich von 6 zu 12, während ich nach oben schaue.

Antwort

1

Wenn ich Sie richtig verstanden habe, und Sie wollen einen Punkt auf vor Ihrem Player verwandeln auf der XZ-Ebene eine Reihe Abstand vom vorderen Ihres Players, sollten Sie so etwas wie dies versuchen:

Vector3 horizontalForward = new Vector3(
     player.transform.position.x + player.transform.forward.x, 
     player.transform.position.y, 
     player.transform.position.z + player.transform.forward.z 
    ).normalized * distance; 

Ich vermute, dass was du beschreibst auftritt, weil die Transformation deiner 'Spieler'-Variable mit der Richtung deiner Spielkamera verbunden ist. Wenn die Kamera nach oben schaut, ändert sich die Weltposition des Vorwärtsturms relativ zur Kamera. Wenn Sie nur X und Z verwenden, wird eine unterschiedliche Entfernung erzeugt, wenn sich Ihre Kamera um die X-Achse dreht. Vielleicht wird dieses Diagramm veranschaulichen, was ich meine ein wenig besser:

effect of y vector

Leider die Hypotenuse ein wenig wackelig, aber Sie die Idee richtig zu machen?

+0

scheint sehr wahr, aber warum nicht das y forward verwenden? was ist die Logik –

+0

Ich fügte y vorwärts mit in horizontaler Vorwärts und wieder Abstand wird variabel –

+0

schöne Antwort können Sie es lösen –