In diesem sehr kurzen Unity 2D-Programmier-Tutorial zeige ich euch, wie ihr die Kamera dem Hauptcharakter mit einer kleinen Verzögerung folgen lassen könnt, statt sofort, sodass ihr flüssigere Übergänge erstellen könnt.
Videotranskript
Hallo zusammen! In diesem sehr kurzen Unity 2D-Programmier-Tutorial zeige ich euch, wie ihr die Kamera dem Hauptcharakter mit einer kleinen Verzögerung folgen lassen könnt, statt sofort, sodass ihr flüssigere Übergänge erstellen könnt.
Dieses Tutorial richtet sich an diejenigen, die bereits mit dem Konzept von Delta Time in Unity und möglicherweise auch mit Interpolationen wie Slerp vertraut sind. Diese Konzepte habe ich bereits in anderen grundlegenden Tutorials behandelt, die ihr als Videos auf Englisch auf dem Kanal und als schriftliche Versionen in mehreren Sprachen auf meiner Website finden könnt.
In dem Beispiel, das ich zeigen werde, schreibe ich der Einfachheit halber den Code für die Bewegung entlang der X-Achse, aber er kann leicht auch auf die vertikale Bewegung entlang der Y-Achse erweitert werden.

Beginnen wir mit dem Basisskript, das die Kameraposition an die Position des Charakters bindet, dem gefolgt werden soll. Das Skript, hier Camera Controller genannt, enthält sofort eine private Variable vom Typ Transform, die im Editor dem Objekt zugewiesen werden muss, dem gefolgt werden soll, damit dessen Position abgerufen werden kann.
In der Update-Funktion haben wir eine Variable vom Typ float, die die X-Koordinate der Spielerposition abruft und in der Kameraposition anstelle der eigenen X-Position der Kamera verwendet wird, in einem Wert namens Camera X, sodass die Kamera dem Charakter sofort folgt.
Die erste Variation, die wir ausprobieren, verwendet Lerp. Daher führe ich eine private Variable namens Follow Time vom Typ float ein, die im Editor zur Feinabstimmung angepasst werden kann. In der Update-Funktion verwende ich Option Nummer 2, um die X-Koordinate der Kamera zu definieren, die nun durch das Ergebnis der Lerp-Funktion gegeben ist.
Lerp ist eine native Unity-Funktion, die eine lineare Interpolation zwischen der aktuellen Position des Objekts, gegeben durch Transform Position, und der Zielposition, gegeben durch Player Position, durchführt. Der Interpolationsparameter wird durch das Verhältnis zwischen Delta Time und der Variable Follow Time dargestellt. Dadurch lässt sich die Geschwindigkeit steuern, mit der sich die Kamera schrittweise der Zielposition nähert, und dieses Verhalten kann auch während der Ausführung im Editor leicht angepasst werden.
Mit der Lerp-Funktion aktualisiert die Kamera bei jedem Frame ihre Position und bewegt sich dabei schrittweise näher an das Ziel heran. Auf diese Weise erscheint die Kamerabewegung weniger abrupt als bei einer sofortigen Verschiebung. Allerdings führt Lerp eine lineare Interpolation ohne Geschwindigkeitsdämpfung in der Nähe des Ziels aus, und das kann die Bewegung in der Endphase der Annäherung weniger natürlich wirken lassen. Um einen weicheren Übergang zu erhalten, kommt die Methode Smooth Damp ins Spiel.
Ich stelle daher zwei neue Variablen bereit, namens Smooth Time und Velocity. Insbesondere ist Smooth Time ein privates float, das zur Feinabstimmung der Interpolation verwendet wird, genau wie Follow Time im Fall von Lerp. Die Variable Velocity ist dagegen ein float, der an die Methode Smooth Damp übergeben wird, um während der Ausführung die aktuelle Geschwindigkeit zu speichern.
Die native Methode Smooth Damp ermöglicht es uns, eine weniger abrupte, gedämpfte Bewegung zu implementieren, bei der die Geschwindigkeit abnimmt, während sich die Kamera der Zielposition nähert. Die Variable Velocity stellt die aktuelle Geschwindigkeit der Kamera entlang der betrachteten Achse dar. Velocity wird per Referenz an die Methode übergeben und während der Interpolation bei jedem Frame automatisch aktualisiert.
Im Code ist die X-Koordinate der Kamera nun das Ergebnis einer durch Smooth Damp ausgeführten Interpolation, konzeptionell ähnlich wie Lerp, da zwischen zwei Werten interpoliert wird, jedoch mit einem weicheren Übergang und in der Methodensignatur zusätzlich unter Verwendung der float-Variable Velocity.
Smooth Damp kann als eine Weiterentwicklung von Lerp betrachtet werden, die eine progressive Geschwindigkeitsdämpfung einführt und die Bewegung natürlicher wirken lässt.
Gut, das war alles für dieses Video! Wenn es euch hilfreich war, könnt ihr euch mit einem Like bedanken und den Kanal abonnieren. Bis bald!