Einführung 2D Spiele mit Unity entwickeln - Die Spielumgebung

Sign in to queue

Description

Dann befassen wir uns mal damit, auf einfach Art und Weise eine allererste Spielumgebung zu erschaffen.

Um uns nicht lange daran aufzuhalten, hübsche Grafiken zu erstellen, schlage ich vor, dass wir erst einmal Platzhaltergrafiken benutzen. Das sind einfarbige, definitiv nicht schöne Boxen, die aber die Dimensionen und Eigenschaften des jeweiligen späteren Spielobjekts haben.

Der Vorteil hierbei liegt darin, dass, sofern ihr in einem Team arbeitet, die Grafiker wissen, mit welchen Grafikgrößen sie arbeiten müssen, welche Namen die jeweiligen Grafiken haben sollen etc. - und ihr könnt die Grafiken extrem schnell aktualisieren bzw. austauschen.

Wie dem auch sei, erstellt mit dem Grafikprogramm eurer Wahl also einfach ein paar Bilder und vermerkt die Größe am besten auch direkt in dem Dateinamen. Zum Beispiel:

platform_300_30.png

Allein am Dateinamen kann ich erkennen, dass es sich hierbei um eine Plattform handelt ("platform"), die 300 Pixel breit und 30 Pixel hoch sein dürfte ("_300_30"). Wie genau ihr das gestaltet, ist euch überlassen - stellt nur sicher, dass alle Bescheid wissen ;)

Diese Grafik könnt ihr entweder direkt innerhalb des Explorers in den Unity-Projektordner legen, oder aber sie aus dem Explorer in die Unity-Projektübersicht ziehen.

Ach ja, unter dem Wort "Project" findet sich auch in der Projektübersicht ein Feld namens "Create".

Generic Episode Image

Neben der Möglichkeit, neue Materialien etc. dort zu erstellen, könnt ihr hier auch neue Ordner anlegen.

Erstellt doch jetzt mal ein paar Ordner im Projekt, nämlich

Prefabs

Skripte

Szenen

Texturen

Stellt auch sicher, dass alle Ordner auf der gleichen Ebene sind. Die Grafik, die ihr eben angelegt habt, gehört in den Ordner "Texturen". Auf diese Art ermöglicht ihr es euch selbst, Ordnung zu halten, was euch später noch sehr helfen wird.

Ihr könnt jetzt das Spielobjekt aus der Grafik erzeugen, indem ihr die Grafik einfach anklickt und festhaltet und dann entweder in die Spielszene oder - wie in meinem Fall - in die Hierarchie-Übersicht zieht.Generic Episode Image

Was ihr aber auch sehen werdet ist, dass der Dateiname nicht unbedingt dem entspricht, was man unter "leicht lesbar" Versteht. Im rot umrahmten Bereich habt ihr drei Dinge, die euch bei der späteren Arbeit auch in Sachen Übersicht helfen:

Ihr könnt den Namen einfach ändern und von, wie hier, "platform_300_30" zum Beispiel in "Plattform" oder "Boden" umbenennen.

Darunter findet sich linksseitig ein Menü "Tag", das den Wert "Untagged" anzeigt. Wenn ihr dort raufklickt, könnt ihr dem Objekt einen sogenannten "Tag" zuweisen. So könnt ihr, wenn ihr zum Beispiel mehrere verschiedene Hindernisarten habt, die aber alle den gleichen Effekt erzeugen sollen, sobald sie auf die Spielfigur treffen, alle mit dem Tag "Hindernis" versehen. Ihr könnt unter "Add Tag..." in dem per Klick aufrufbaren Menü auch eigene Tags festlegen.

Und "Layer", mit dem wir uns in diesem Tutorial nicht aufhalten werden, ermöglicht es euch, verschiedene Objekte auf verschiedene Ebenen zu legen. Das ist praktisch, wenn ihr zum Beispiel eine Landschaft aus verschiedenen Bergen und Hügeln anlegen wollt, die Sichtbarkeiten aber steuern möchtet. Oder wenn Gegenstände aneinander vorbei laufen sollen (zum Beispiel der Gegner, der an dem Hügel vorbeiläuft).

Wie dem auch sei, wir haben jetzt, wie ihr seht, einen grünen Balken. Klickt auf "Game", um die Spielansicht zu sehen. Juchu! Ein grüner Balken! Vor blauem Hintergrund!

... moment, blauer Hintergrund?

Wenn ihr auf "Main Camera" in der Hierarchie klickt, dann seht ihr im Inspektor den Punkt "Background". Hier könnt ihr das blau in ein... pink... oder so ändern, wenn euch danach ist:

Generic Episode Image

 

Das kanns aber eigentlich auch nicht sein... den hübsch ist auch anders.

Es gibt noch eine andere Möglichkeit, mit nur wenig Aufwand einen Hintergrund zu bekommen - oder zumindest einen Himmel:

Skyboxes.

Generic Episode Image

Klickt erst einmal auf

Edit -> Render Settings

Dann tauchen im Inspektor ... genau ... die Rendereinstellungen auf, hier rechts zu sehen. Ihr seht auch schon das Feld "Skyboxes".

 

Generic Episode Image

Wir haben jetzt allerdings noch keine Skyboxes im Projekt - woher auch?

Das Schöne ist, dass Unity schon welche mitliefert. Klickt einfach auf

Assets -> Import Package -> Skyboxes

Und ihr bekommt eine Auswahl der zu importierenden Skyboxes angezeigt. Lasst einfach alle ausgewählt, importiert sie und klickt dann auf den kleinen Kringel neben dem Skyboxes Material-Feld, wo gerade vermutlich "None (Material)" steht. Ihr seht, wenn ihr auf die verschiedenen Materialien klickt, immer eine Vorschau, nehmt also einfach das, was euch am besten gefällt.

Jetzt haben wir einen Boden und einen Hintergrund.

Erstellen wir auf die gleiche Art wie wir den Boden erstellt haben, eine Spielfigur: wir ziehen eine (andere) Grafik in entweder die Hierarchieübersicht oder ins Spielfeld.

Generic Episode Image

 Im moment noch ein bisschen verbesserungswürdig. Benennen wir die neue Box erst einmal um in "Spielfigur" und geben ihr den Player-Tag - man weiß ja nie.

Dann wählen wir nochmal den Boden aus und verschieben ihn ein wenig nach unten (bitte beachtet, dass das nur in der Szenenansicht bzw. im Inspektor geht, nicht in der Spielansicht).

Jetzt machen wir mal eins: wir klicken auf den "Play"-Button. Der befindet sich oben in der Mitte von Unity:

Generic Episode Image

Ihr werdet sehen, es passiert ....

... nichts. Die Boxen bewegen sich nicht, keine von den beiden.

Um das Spiel zu stoppen, klickt nochmal auf den "Play"-Button.

Das liegt daran, dass die Objekte einfach noch keinerlei Masse haben.

Ändern wir das mal! Wählen wir die Spielfigur in der Hierarchieübersicht aus und konzentrieren uns auf den Inspektor.

Generic Episode Image

Klickt hier auf den Button "Add Component" (1.) um der Spielfigur neue Eigenschaften zuzuweisen. In der Suchmaske (2.) beginnt ihr, das Wort "Rigidbody" einzutippen - Rigidbody ist die Komponente, die dafür sorgt, dass sich der Körper auch wie ein physisches Objekt verhält. In der Auswahl darunter wählt ihr "Rigidbody 2D" (3.).

Klickt jetzt noch einmal auf "Play" - das Objekt fällt!

... durch den Boden hindurch. :(

Genau, wie ihr eben der Spielfigur den Rigidbody hinzugefügt habt, ergänzt ihr noch die Komponente "Box Collider 2D".

Der Box Collider sorgt dafür, dass Objekte miteinander kollidieren können. Wie der Name schon vermuten lässt. Bei erneutem Klick auf "Play" fällt der Spieler aber immer noch durch den Boden.

Fügt dem Objekt "Boden" jetzt auch den "Box Collider 2D" hinzu und spielts nochmal ab - und schon bleibt der Spieler auf dem Spielobjekt stehen.

Versucht jetzt aber mal, dem Boden auch einen Rigidbody 2D zu geben und auf "Play" zu klicken.

Das Ergebnis des Ganzen ist, dass allerdings jetzt beide Spielobjekte runterfallen.

Geht nochmal in den Inspektor zum Spielobjekt "Boden":

Generic Episode Image

Die Lösung des Problems liegt im "Is Kinematic" - damit bleibt dieser Boden "fliegend" und fällt nicht runter.

Vorlagen erstellen:

Ihr könnt aus den bestehenden Spielobjekten auch Vorlagen erstellen. Diese heißen "Prefabs" - jetzt wisst ihr auch, warum ihr vorhin den Ordner mit dem Namen "Prefabs" erstellt habt.

Zieht jetzt mal zum Beispiel den "Boden" in den Ordner "Prefabs" - und ihr seht, ein neues Objekt "Boden" wird erstellt. Ihr könnt ab sofort einfach viele Objekte mit den gleichen Eigenschaften erstellen, die ihr auch zentral für alle Kopien ändern könnt.

Das Spielhindernis

Wir haben jetzt einen Boden und eine Spielfigur, allerdings noch kein Hindernis.

Auf die gleiche Art und Weise, wie wir bereits den Boden und die Spielfigur generiert haben, erstellt ihr jetzt eine Spielfigur, die aus einer oberen und einer unteren Wand besteht, aber noch genügend Raum hat, damit der Spieler durchhüpfen kann.

Den Wänden gebt ihr jeweils einen Box Collider2D und einen Rigidbody2D, bei dem ihr "is kinematic" aktiviert.

Klickt ihr auf die einzelnen Wände, könnt ihr auch kontrollieren, ob der Collider (die grüne Box) auch zum Spielobjekt passt. sollte dem nicht so sein: Passt die Größe im Inspektor in den Komponenteneinstellungen unter "Size" an.

Generic Episode Image

Klickt im Menü oben jetzt auf GameObject und Create Empty, um ein neues Objekt zur Gruppierung zur erstellen, benennt es "Hindernis" und zieht die obere und untere Wand in das Hindernisobjekt.

Am besten ihr setzt die X-Werte für alle drei Objekte (Hindernis und die beiden Wände) auf 0, die Y-Werte lasst ihr wie ihr sie eingestellt habt.

Zu guter Letzt zieht ihr das gesamte Hindernisobjekt aus der Hierarchie-Übersicht in den Prefabs-Ordner in der Projektansicht, um die Hindernisvorlage zu erstellen ... und löscht das Hindernis aus der Projektübersicht.

Tag:

Unity

The Discussion

Add Your 2 Cents