Ohne Kamera bleibt deine sorgfältig aufgebaute Spielwelt für den Spieler unsichtbar. In Unity übernimmt diese Aufgabe in einer neuen Szene meist die Main Camera. Sie bestimmt, welchen Bereich deiner Szene das Game-Fenster zeigt und aus welcher Perspektive der Spieler das Geschehen erlebt.
Bei einem 2D-Plattformer kann die Kamera beispielsweise der Spielfigur durch das Level folgen. Ein Adventure nutzt vielleicht feste Bildausschnitte, während ein 3D-Spiel die Kamera frei durch den Raum bewegt. Die Main Camera ist damit nicht nur ein technisches Hilfsmittel. Ihre Position und Bewegung beeinflussen unmittelbar, wie du dich innerhalb eines Spiels orientierst.
Die Main Camera ist ein GameObject
In der Hierarchy erscheint die Main Camera zunächst wie andere GameObjects auch. Der Name Main Camera macht sie noch nicht zur Kamera. Erst die hinzugefügten Komponenten geben dem Objekt seine Funktionen.
Zu den grundlegenden Bestandteilen zählen Transform und Camera. Transform legt Position, Rotation und Skalierung fest. Die Camera-Komponente sorgt dafür, dass Unity einen Ausschnitt der Szene rendert und im Game-Fenster ausgibt. Je nach Projekt kommen weitere Komponenten hinzu.
Transform bestimmt Position und Ausrichtung
Über den Transform platzierst du die Main Camera innerhalb deiner Szene. Die X-, Y- und Z-Werte bestimmen ihre Position. Rotation legt die Blickrichtung fest. Scale gehört ebenfalls zum Transform, spielt für die eigentliche Kameradarstellung jedoch eine andere Rolle als die Kameraeinstellungen selbst.
Gerade bei 2D-Spielen begegnet dir häufig ein negativer Z-Wert für die Kamera, während sich die sichtbaren Sprites näher an Z = 0 befinden. Die genaue Anordnung hängt allerdings vom Aufbau deines Projekts und von der verwendeten Projektion ab.
Die Camera-Komponente erzeugt das sichtbare Bild
Die eigentliche Darstellung steuerst du über die Camera-Komponente. Dort entscheidest du unter anderem, welche Projektion zum Einsatz kommt und welche Teile der Szene die Kamera berücksichtigt.
Unity unterscheidet grundsätzlich zwischen perspektivischer und orthografischer Darstellung. Perspective vermittelt räumliche Tiefe, indem weiter entfernte Objekte kleiner erscheinen. Orthographic verzichtet auf diesen perspektivischen Größenunterschied und eignet sich deshalb für viele 2D-Spiele.
MainCamera ist ein Tag und kein Kameratyp
Ein leicht zu übersehendes Detail befindet sich oben im Inspector: das Tag MainCamera. Dabei handelt es sich nicht um einen besonderen Kameratyp, sondern um eine Kennzeichnung des GameObjects.
Skripte können über dieses Tag nach der Hauptkamera suchen. Deshalb sind Objektname und Tag voneinander zu unterscheiden. Du kannst das GameObject umbenennen und trotzdem das Tag MainCamera beibehalten. Umgekehrt macht ein Objekt namens „Main Camera“ ohne entsprechendes Tag nicht automatisch dieselbe Kennzeichnung verfügbar.
Layer und Kamera arbeiten zusammen
Neben dem Tag besitzt das Kameraobjekt eine Layer. Sie ordnet das GameObject selbst einer Objektgruppe zu. Davon getrennt entscheidet die Camera-Komponente über ihre Culling Mask, welche Layers sie rendert.
Diese Trennung wird besonders interessant, wenn du bestimmte Elemente nur mit ausgewählten Kameras darstellen möchtest. Eine zusätzliche Kamera könnte beispielsweise andere Objekte erfassen als die eigentliche Spielkamera.
Audio Listener – die Kamera als Hörposition
Auf der Main Camera befindet sich in vielen Unity-Szenen außerdem ein Audio Listener. Er bildet den Hörpunkt des Spielers. Audio Sources in der Szene liefern die Klänge, während der Listener sie aus seiner Position heraus empfängt.
Das ist besonders bei räumlichem 3D-Audio relevant. Bewegst du die Kamera, verändert sich damit auch die Position des Listeners. Bei einem klassischen Kamerasystem entspricht der visuelle Standpunkt dadurch zugleich dem akustischen Standpunkt des Spielers.
Main Camera mit der Universal Render Pipeline
Nutzt dein Projekt die Universal Render Pipeline (URP), kann zusätzlich Universal Additional Camera Data im Inspector auftauchen. Diese Komponente ergänzt die allgemeine Camera-Komponente um Einstellungen, die zur URP gehören.
Du musst deshalb nicht jede Komponente, die automatisch auf der Main Camera erscheint, selbst angelegt haben. Welche zusätzlichen Komponenten vorhanden sind, hängt unter anderem von den installierten Paketen, der Render Pipeline und deinem Kamerasystem ab.
Die Kamera dem Spieler folgen lassen
Für einen Plattformer soll die Kamera meist nicht dauerhaft an derselben Position bleiben. Ein Camera Follow Script kann die Position des Spielers auslesen und die Main Camera entsprechend bewegen. Dabei lassen sich ein Abstand zum Spieler, Begrenzungen des sichtbaren Levelbereichs oder eine weichere Bewegung ergänzen.
Wie du eine solche Lösung aufbaust, erfährst du im Artikel Unity Camera Follow Script.
Cinemachine erweitert die Kamerasteuerung
Eine Alternative zu einer vollständig selbst programmierten Kamerasteuerung bietet Cinemachine. Das Unity-Paket unterstützt unter anderem das Folgen von Zielen, Kameraübergänge und komplexere Kamerakonfigurationen.
Auf der eigentlichen Unity-Kamera kann dabei ein Cinemachine Brain sitzen. Es setzt die Vorgaben der Cinemachine-Kameras für die rendernde Kamera um. Dadurch lassen sich unterschiedliche Kameraeinstellungen miteinander kombinieren, ohne sämtliche Bewegungen selbst programmieren zu müssen.
Mehrere Kameras für unterschiedliche Aufgaben
Die Bezeichnung Main Camera bedeutet nicht, dass deine Szene nur eine Kamera enthalten darf. Mehrere Kameras können unterschiedliche Aufgaben übernehmen. Denkbar sind beispielsweise Minikarten, zusätzliche Ansichten, spezielle Effekte oder ein Wechsel zwischen verschiedenen Perspektiven.
Welche Objekte eine Kamera darstellt und wie mehrere Kameras zusammenspielen, hängt von ihrer Konfiguration sowie der verwendeten Render Pipeline ab. Für ein einfaches 2D-Spiel reicht zunächst oft eine einzelne Main Camera. Mit steigenden Anforderungen lässt sich das Kamerasystem später erweitern.
Weitere technische Details findest du im Unity-Handbuch zu Kameras.
Andere Artikel auf Games und Lyrik: Runaway 3: A Twist of Fate
