2017-04-11 3 views
0

ich Vector3.Lerp bin mit meiner Kamera nach meinen Spielern Gameobject zu bewegen. Aufgrund der Mechanik meines Spiels kann die Position meines Player GameObject "teleportieren" und ein paar Vektoren springen, was die Zielposition verändert, zu der die Kamera hinwinkt.Zieländerungen während Vector3.Lerp Unity3D

Dies führt zu einem Stottern, da sich die Zielposition in der Mitte des Lerps ändert und die Kamera aufgrund der Zielposition des Lerps, der in der Mitte des Lerps geändert wird, springt.

Wie kann ich dies zu berücksichtigen, und die Kamera machen reibungslos bewegen in Richtung der neuen Position“

+0

warum verwenden Sie nicht 'Vector3.MoveTowards();'? –

Antwort

1

Für aa Lerp, übergeben Sie den Anfang, das Ende und einen Prozentsatz zwischen zu interpolieren.

Es klingt, als würden Sie das Ende in der Mitte ändern, also müssen Sie herausfinden, wie viel Prozent die aktuelle Kameraposition im neuen Start/Ende sein würde, und Ihren Prozentwert aktualisieren, um Platz zu schaffen.

Ex :

Lerping zwischen 0-10 mit einem aktuellen Wert von 5 wäre ein Prozentsatz von 0,5. Wenn Sie Ihr Ende auf 20 setzen, müssen Sie jetzt Ihren Prozentsatz auf 0,25 setzen, um Stottern zu vermeiden.

Ein anderer Weg, dies zu tun ist, zu betrügen und Lerp immer zwischen Strom (statt Start) und Ziel mit einem Prozentsatz wie 0,9 (Einstellung je nach Bedarf). Dies missbraucht lerp, aber gibt Ihnen einen beruhigenden Nebeneffekt, der gut genug sein sollte, wenn Ihre Positionsupdates klein genug sind.