Die Unity Camera findest du im Inspector-Fenster von Unity. Die Camera-Komponente bestimmt in Unity, wie deine Spielewelt für den Spieler sichtbar wird. Sie legt unter anderem die Projektion, den sichtbaren Bereich und die gerenderten Layers fest. Während der Transform bestimmt, wo sich das Kameraobjekt befindet und wohin es ausgerichtet ist, entscheidet die Camera darüber, wie Unity die Szene von diesem Standpunkt aus darstellt.
Die Camera macht ein GameObject zur Kamera
Eine Kamera besteht in Unity nicht aus einem besonderen GameObject-Typ. Stattdessen erhält ein GameObject eine Camera-Komponente. Dadurch kann es die Szene rendern und das Ergebnis beispielsweise im Game-Fenster ausgeben.
Das lässt sich gut an der Main Camera einer neuen Szene erkennen. Sie besitzt wie andere GameObjects einen Transform. Hinzu kommt die Camera-Komponente mit den eigentlichen Kameraeinstellungen. Je nach Projekt können weitere Komponenten für Audio, Render Pipeline oder Kamerasteuerung folgen.
Den gesamten Aufbau der Hauptkamera behandelt der Artikel Unity Main Camera – der Blick auf deine Spielwelt.
Transform und Camera erfüllen unterschiedliche Aufgaben
Die Camera-Komponente bestimmt nicht allein, aus welcher Position du die Spielwelt betrachtest. Dafür ist der Transform des GameObjects zuständig. Seine Position und Rotation legen Standort und Ausrichtung fest.
Die Camera verarbeitet diesen Blickpunkt anschließend für die Darstellung. Dadurch lassen sich Kamerabewegung und Rendering logisch voneinander trennen. Ein Follow-Script kann beispielsweise den Transform verschieben, während die Camera weiterhin mit denselben Darstellungseinstellungen arbeitet.
Perspective erzeugt räumliche Tiefe
Eine der grundlegenden Kameraentscheidungen betrifft die Projection. Bei Perspective entsteht die aus der räumlichen Wahrnehmung bekannte perspektivische Wirkung: Weiter entfernte Objekte erscheinen kleiner als nahe Objekte.
Diese Projektion eignet sich besonders für viele 3D-Spiele. Über das Field of View bestimmst du dabei den Blickwinkel der Kamera. Ein veränderter Wert beeinflusst, wie viel von der Umgebung innerhalb des Kamerabildes erscheint und wie stark die perspektivische Wirkung wahrgenommen wird.
Orthographic für viele 2D-Spiele
Bei Orthographic verändert die Entfernung zur Kamera die dargestellte Größe eines Objekts nicht auf dieselbe perspektivische Weise. Deshalb kommt diese Projektion häufig in 2D-Spielen, Strategiespielen oder anderen Darstellungen zum Einsatz, bei denen eine perspektivische Verkleinerung unerwünscht ist.
Statt des Field of View begegnet dir bei einer orthografischen Kamera die Orthographic Size. Sie beeinflusst den sichtbaren Ausschnitt. Ein größerer Wert zeigt mehr von der Spielwelt, wodurch die dargestellten Elemente auf dem Bildschirm entsprechend kleiner erscheinen. Ein kleinerer Wert führt zu einem engeren Ausschnitt.
Clipping Planes begrenzen den sichtbaren Bereich
Mit den Clipping Planes definierst du, innerhalb welcher Entfernungen die Camera Objekte rendert. Dafür stehen eine Near- und eine Far-Grenze zur Verfügung.
Objekte, die sich außerhalb dieses Bereichs befinden, werden von der Kamera nicht dargestellt. Die Werte solltest du deshalb passend zur Größe und zum Aufbau deiner Szene wählen. Liegt ein Objekt zu nah vor der Near Clipping Plane oder hinter der Far Clipping Plane, kann es trotz korrekter Position scheinbar verschwinden.
Culling Mask bestimmt die sichtbaren Layers
Über die Culling Mask legst du fest, welche normalen GameObject-Layers eine Camera rendert. Standardmäßig soll eine Kamera häufig große Teile der Szene darstellen. Du kannst einzelne Layers jedoch gezielt ausschließen.
Das eignet sich beispielsweise für unterschiedliche Kamerasysteme. Eine Kamera könnte die eigentliche Spielwelt darstellen, während eine andere nur bestimmte Objektgruppen berücksichtigt. Die Culling Mask prüft dabei die normalen Layers der GameObjects und nicht deren Sorting Layers.
Wie diese Gruppierung funktioniert, erfährst du unter Unity Layers – Objekte für Rendering und Physik ordnen.
Depth und Zeichenreihenfolge nicht verwechseln
Bei der Arbeit mit 2D-Spielen treffen mehrere Systeme zur räumlichen und visuellen Ordnung aufeinander. Die Position eines GameObjects, seine normale Layer, eine Sorting Layer und der Order in Layer erfüllen unterschiedliche Aufgaben.
Die Camera betrachtet die Szene aus ihrer Position. Bei SpriteRenderern beeinflussen dagegen insbesondere Sorting Layer und Order in Layer, in welcher Reihenfolge Sprites dargestellt werden. Eine normale GameObject-Layer dient wiederum unter anderem der Culling Mask. Diese Systeme solltest du deshalb nicht gegeneinander austauschen.
Mehrere Cameras in einer Szene
Eine Unity-Szene kann mehrere Camera-Komponenten enthalten. Dadurch lassen sich unterschiedliche Ansichten oder spezielle Darstellungen realisieren. Denkbar sind beispielsweise eine zusätzliche Kamera für eine Minikarte oder Kameras, die unterschiedliche Teile einer Szene erfassen.
Mehrere Kameras bedeuten allerdings nicht automatisch, dass du mehrere Main Cameras benötigst. MainCamera ist ein Tag, über das Scripts die entsprechend gekennzeichnete Kamera finden können. Camera-Komponente, Name des GameObjects und MainCamera-Tag sind getrennte Eigenschaften.
Camera und Audio Listener
Auf der Hauptkamera befindet sich häufig zusätzlich ein Audio Listener. Er gehört nicht zur Camera-Komponente selbst, sondern ist eine eigene Komponente des Unity-Audiosystems. Seine Position bestimmt den Hörpunkt für die Audioausgabe.
Dadurch können Bild und räumlicher Ton demselben Standpunkt folgen. Bewegst du eine Main Camera mit Audio Listener durch eine 3D-Szene, verändert sich zugleich die Position, aus der räumliche Audio Sources wahrgenommen werden.
Camera und Universal Render Pipeline
Verwendet dein Projekt die Universal Render Pipeline (URP), kann die Kamera zusätzliche Einstellungen erhalten. Unity trennt dabei die allgemeine Camera-Komponente von Funktionen, die speziell zur Render Pipeline gehören.
Dafür begegnet dir unter anderem Universal Additional Camera Data. Diese zusätzlichen Kameradaten erweitern die Camera um URP-spezifische Funktionen, ohne die grundlegende Camera-Komponente zu ersetzen.
Camera Stacking mit URP
URP unterstützt außerdem Camera Stacking. Dabei bildet eine Base Camera die Grundlage, während Overlay Cameras zusätzliche Inhalte über das vorhandene Kamerabild rendern können. Damit lassen sich mehrere Kameraausgaben innerhalb eines gemeinsamen Aufbaus kombinieren.
Ob du Camera Stacking benötigst, hängt vom Aufbau deines Spiels ab. Für eine einfache 2D-Szene mit einer einzigen Kamera ist eine solche Konfiguration häufig nicht erforderlich.
Camera und Cinemachine
Für komplexere Kamerabewegungen kannst du zusätzlich Cinemachine einsetzen. Cinemachine ersetzt die rendernde Camera nicht einfach, sondern steuert, wie sich die eigentliche Kamera entsprechend der eingerichteten virtuellen Kameras verhalten soll.
Alternativ lässt sich die Kamera mit einem eigenen Follow-Script bewegen. Diese Variante eignet sich beispielsweise für einen 2D-Plattformer, bei dem die Kamera lediglich der Spielfigur folgen und innerhalb definierter Levelgrenzen bleiben soll.
Die richtige Kameraeinstellung hängt vom Spiel ab
Eine universelle Camera-Konfiguration für jedes Unity-Projekt gibt es nicht. Ein seitlich dargestellter 2D-Plattformer benötigt andere Einstellungen als ein dreidimensionales Spiel aus der Ego-Perspektive. Projektion, sichtbarer Ausschnitt, Layers und Kamerabewegung orientieren sich deshalb an der gewünschten Darstellung und Spielmechanik.
Für den Einstieg lohnt es sich, zunächst Projection, Orthographic Size beziehungsweise Field of View, Clipping Planes und Culling Mask zu verstehen. Auf dieser Grundlage kannst du die Kamera später mit Follow-Systemen, Cinemachine oder zusätzlichen URP-Funktionen erweitern.
Die einzelnen Einstellungen der Komponente beschreibt das Unity-Handbuch zur Camera.
Weiter geht es mit Runaway 3: A Twist of Fate
