Es gibt viele verschiedene Möglichkeiten, mit einer Kamera in Spielen zu arbeiten, und je nach Typ des Spiels, an dem du arbeitest, kann das sehr unterschiedlich sein. In der Unreal Engine bestehen Kameras in der Regel aus einem Actor mit einer Federarm-Komponente und einer Kamera-Komponente, die die Ansicht rendert. Für die grundlegenden Kameraeinstellungen kannst du dir Kameras in Unreal Engine verwenden ansehen.
In diesem Dokument gehen die Entwickler darauf ein, wie sie sich entschieden haben, die Kamera speziell für „Parrot“ zu implementieren, sowie alle Einstellungen, die von Interesse sind.
„Parrot“ Kamera-Subsystem
Zunächst wurde jede Karte identifiziert, die über spezifische Kamera-Einstellungen für die Welt verfügt.
Die Entwickler haben UParrotCameraSubsystem erstellt, das die Lebenszeit der Welt teilt und die Kamera mit diesen Einstellungen bei BeginPlay initialisiert. Die kartenspezifischen Einstellungen werden auf AParrotWorldSettings gespeichert, was für die Speicherung von kartenspezifischen Daten nützlich ist. Für die Kamera ist dies die gewünschte Kameraklasse, der Bewegungsmodus und die obere/untere Grenze auf Z, an der die Kamera dem Spieler nicht mehr folgen soll. Die Klasse selbst ist optional und die Nichtbereitstellung ist in Ordnung. Dies geschieht über das Hauptmenü.
Die Gründe für die Verwendung eines Subsystems findest du in der Dokumentation Subsysteme in „Parrot“.
Die Welteinstellungen findest du im Panel Welteinstellungen im Editor.
„Parrot“ Kamera
AParrotCamera ist der Ort, an dem der größte Teil der Logik stattfindet. Wenn die Kamera vom Subsystem initialisiert wird, erhält sie: den Spieler, dem sie folgen soll, den Bewegungsmodus und die Grenzen aus den Welteinstellungen.
Die Kamera hat drei mögliche Bewegungsmodi: Keine, Fixiert und Verfolgen.
Keine ist genau wie beschrieben. Die Kamera wird nichts tun.
Der Bewegungsmodus Fixiert ist einfach. Wenn der Spieler ein gebundenes Volumen betritt, wird der Kamera vom Kamera-Subsystem eine fixierte Position vorgegeben, zu der sie interpoliert. Der Spieler kann sich dann frei bewegen, bis der Bewegungsmodus aktualisiert wird.
Der Bewegungsmodus Verfolgen ist komplexer und am besten zu verstehen, wenn du dir Content/Blueprints/BP_PlatformerCamera als visuelle Referenz ansiehst. AParrotCamera hat eine Box zum Auslösen von Bewegungen und ein Mesh zum Blockieren als Standard-Teilobjekte. Das bedeutet, dass jede Instanz von AParrotCamera sie automatisch in ihrer Hierarchie hinzugefügt hat. Beide sind auf das Frustum der Kamera, den Federarm und die Perspektive ausgerichtet, um den gewünschten Effekt zu erzielen. Diese beiden Komponenten sind an den Kamera-Actor angekoppelt und folgen ihm in der Welt.
Das blockierende Mesh verhindert, dass der Spieler sich rückwärts bewegt, indem es mit dem Spieler in der Welt kollidiert.
Wenn der Spieler die Bewegungsauslöser-Box überlappt, versucht die Kamera, mit einer bestimmten Geschwindigkeit auf den X-Wert des Spielers zu interpolieren. Die Geschwindigkeit wird außerdem mit der Entfernung des Spielers über die äußerste linke Grenze des Auslösers hinaus multipliziert. Je weiter der Spieler in das Volumen vordringt, desto schneller sollte sich die Kamera bewegen, um aufzuholen.
Das Ergebnis ist, dass sich der Spieler auf der linken Seite des Bildschirms bis zum blockierenden Mesh frei bewegen kann, die Kamera sich jedoch mit dem Spieler bewegt, wenn dieser den Schwellenwert passiert. Das sorgt für einen schönen Effekt, wenn der Spieler sich auf der X-Achse durch die Welt bewegt.
Ein weiterer erwähnenswerter Faktor beim Bewegungsmodus „Verfolgen“ ist die Verfolgung der letzten bekannten Position des Spielers. Wenn das Z des Spielers die Grenzen der Welt überschreitet oder der Spieler-Charakter zerstört wird, interpolieren wir die Kamera auf die letzte bekannte Position des Spielers. Dies verhindert ein störendes Verhalten der Kamera in Abhängigkeit von der Bewegung/dem Zustand des Spielers.
Schließlich hat die Kamerakomponente selbst auf BP_PlatformerCamera einige Einstellungen, auf die du achten solltest. Der Projektionsmodus ist die Perspektive mit einem Sichtfeld von 90 Grad und einem Seitenverhältnis von 1,77, was Standard HD ist. Unter Kameraoptionen schränken wir das Seitenverhältnis so ein, dass die Kamera unabhängig von der Auflösung der Anwendung immer korrekt aussieht.