Vector3.Lerp mit code in der Einheit
Mache ich eine einfache 2D-Weltraum-shooter-Spiel in der Einheit. Ich habe die Bewegungen gut funktioniert und die Kamera folgt dem Spieler. Ich habe meinen Kopf kratzen über, wie man die Kamera zu einer leichten Verzögerung aus die Spieler bewegen, um die Kamera bewegen, um aufzuholen, um es ohne es zu teleportieren. Mir wurde gesagt, verwenden Sie ein Vector3.Lerp und versucht, ein paar Dinge von stackoverflow Antworten, aber keiner schien zu funktionieren, mit der Möglichkeit meinen code eingerichtet ist. Irgendwelche Vorschläge?
(myTarget ist mit dem Spieler)
public class cameraFollower : MonoBehaviour {
public Transform myTarget;
void Update () {
if(myTarget != null){
Vector3 targPos = myTarget.position;
targPos.z = transform.position.z;
transform.position = targPos;
}
}
}
- Bitte verwenden Sie unity3d-tag für solche Fragen.
- meine Entschuldigung!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Idee mit Lerping Bewegung der Kamera ist die schrittweise und reibungslos die Kamera seinen Weg auf die Zielposition.
Je weiter Weg die Kamera ist, desto größer ist die Distanz Flugreisen pro frame, aber je näher die Kamera ist, die Distanz pro frame kleiner wird, so dass die Kamera Leichtigkeit in die Ziel-position.
Als ein Beispiel, versuchen Sie ersetzen Ihre
transform.position = targPos;
Zeile mit:Wenn Sie lineare Interpolation (Lerp), riskieren Sie, dass Zeit.deltaTime * speed - > 1, in dem Fall die Kamera beginnt zu extrapolieren. Das ist, statt es vor sich, wenn Sie Ihr Ziel nicht.
Eine alternative ist die Verwendung von pow in Ihrem linearen interpolation.
Mathf.Pow(0.5, Zeit) bedeutet, dass nach 1/Geschwindigkeit der zweiten Hälfte der Entfernung zu dem Zielpunkt Gefahren werden.