Start Magazin Wie macht man eigentlich ein Spiel? – Teil 4

Wie macht man eigentlich ein Spiel? – Teil 4

208
0
Teilen

In der letzten Woche hatten wir uns mit den Grafiken und Animationen beschäftigt. Wir hatten unseren Spielercharakter erstellt und als Objekt in unsere Entwicklungsumgebung eingefügt. Auch die weiteren Grafiken wie Planeten hatten wir designed.

Heute beschäftigen wir uns mit dem Thema Gravitation, Steuerung und was passiert, wenn zwei Objekte aufeinander treffen.

Gravitation

In unserem Weltraum-Spiel haben alle Planeten eine gewisse Gravitation. Der Spieler soll sich ja auf den Planeten fortbewegen bzw. auch springen können. Die Anziehungskraft muss also so stark sein, dass ein normalen Sprung problemlos möglich ist. Das Alien muss allerdings mittels Doppelsprung die Anziehungskraft des Planeten überwinden können. Im Weltraum selbst gibt es keine Gravitation. Hier soll das Alien dann schweben.

Aber wie “baut” man so eine Gravitation? Hier macht es sich nun richtig bezahlt, dass wir auf eine Entwicklungsumgebung wie Unity3D gesetzt haben. Hätten wir das Spiel nativ entwickelt, so müssten wir nun das Verhalten der Gravitation selbst programmieren, was ziemlich aufwändig ist. Unity3D hingegen bringt von Haus aus schon viele Komponenten mit, die man auch ohne selber programmieren zu müssen einfach verwenden kann.

Schauen wir uns das doch einmal in der Entwicklungsumgebung genauer an. Wir haben also unser Alien mit seinen Unterelementen gebaut und fügen dem obersten Element (quasi dem Wurzel-Element) einen Rigidbody2D hinzu. Als Rigidbody wird in Unity3D die Physik-Komponente bezeichnet.

Die Physik-Komponente heißt in Unity3D Rigidbody. Hier kann man Werte für Gravitation, Masse, etc. angeben.

Hier können wir nun angeben, wie viel Masse und Gravitation unser Alien haben soll. Wir tragen nun einen Wert ein, starten das Spiel und schauen einfach mal, was passiert:

Das Alien fällt nun. Wir sehen in dem Beispiel auch, dass das Alien durch den fiktiven Boden fällt, den wir zu Demonstrationszwecken eingefügt haben. Damit ein Objekt wie das Alien mit einem anderen Objekt in Unity3D interagieren kann (wie z.B. Planeten oder Gegner), müssen wir alle diese Objekte mit so genannten Collidern ausstatten.

Collider

Collider sind im Grunde nichts anderes als Rahmen, die wir um ein Objekt (Alien, Planet, oder Gegner) legen. Es gibt Collider in Form von Kreisen, Rechtecken oder Polygonen. Je nachdem, für welchen Einsatzzweck man sie eben benötigt.

Die Collider erkennt man an den grünen Rahmen. Hier ein rechteckiger und ein runder Collider.

Ein Objekt kann dabei mehrere Collider haben. Diese kann man nämlich auf 2 Arten nutzen: Einmal lässt man die “isTrigger”-Option deaktiviert. Das bedeutet dann, dass dieser Collider nicht mit einem anderen Collider “reagiert”. Man setzt das z.B. ein, wenn eine Spielfigur nicht durch den Boden fallen soll. Der Boden hat dann einen Collider und die Spielfigur hat dann ebenfalls einen Collider. Bei beiden ist die “isTrigger”-Option deaktiviert.

Eine etwas verlangsamte Darstellung, wie das Alien auf den Boden trifft und nicht mehr hindurch fällt.
Das Alien hat Collider und der Boden ebenfalls.

Die andere Möglichkeit die Collider zu verwenden ist die “isTrigger”-Option zu aktivieren. Hierbei hat dann beispielsweise unser Alien diesen Collider sowie ein Gegner. Treffen diese beiden dann aufeinander wird ein Event ausgelöst (OnTriggerEnter), bei welchem wir ausprogrammieren müssen, was in diesem Fall passieren soll. Üblicherweise bekommt unser Alien dann Leben abgezogen. Man kann aber auch eine Gewehrkugel mit einem solchen Collider ausstatten, der dann dem Gegner Gesundheit abzieht.

Bei unserem Spiel haben die Planeten z.B. auch mehrere Collider. Einmal einen Trigger-Collider, mit dem wir dann die Gravitation bei dem Alien aktivieren und einen Nicht-Trigger-Collider, der den Boden des Planet darstellt und auf dem unser Alien laufen kann.

Steuerung

Unser Alien hat nun Schwerkraft, fällt nicht mehr durch den Planeten hindurch und die Animationen sind auch schon fertig. Jetzt muß unser Alien nur noch laufen und hüpfen können. Wir erstellen in unserer Entwicklungsumgebung ein neues Skript und fügen dieses unserem Alien als Komponente hinzu.

Beispiel eines Player-Controllers

Hier haben wir einmal angegeben, dass unser Alien automatisch laufen soll, und zwar per Default nach rechts. Double-Jump soll ebenfalls möglich sein. Die Lauf-Geschwindigkeit, Gravitation, etc. haben wir auch angegeben und welche Elemente in diesem Spiel als „Ground“, also als Boden, gelten sollen. Das wären in unserem Fall die Planeten.

Dieses Verhalten muß man vorher natürlich ausprogrammieren. In Unity3D geschieht dies in C# oder in JavaScript. Wie so etwas aussehen kann zeige ich dir hier beispielhaft:

Ein beispielhafter Code-Schnipsel für den Player-Controller.

Nun sind wir auch schon am Ende unseres vierten Teils angelangt. Im nächsten Teil können wir uns der Spielkamera widmen und wir sprechen über Zeit. Denn von der Zeit hängt in einem Spiel einfach alles ab. Anschließend erstellen wir auch schon unseren ersten Level.