3D-Spiele programmieren mit Unity - Hans-Georg Schumann - E-Book

3D-Spiele programmieren mit Unity E-Book

Hans-Georg Schumann

0,0

Beschreibung

  • Komplette 2D- und 3D-Spiele Schritt für Schritt entwickeln
  • Figuren animieren sowie Landschaften und Gebäude gestalten
  • Spielend programmieren lernen für Einsteiger

Ganz einfach eigene 3D-Spiele entwickeln

Hans-Georg Schumann zeigt detailliert und leicht verständlich, wie Einsteiger mit der beliebten Spiele-Engine Unity eigene 3D-Spiele entwickeln können. Folgen Sie dem Autor Schritt für Schritt, wie verschiedene Elemente eines 3D-Spiels erstellt werden: sowohl 2D- als auch 3D-Landschaften und Bauwerke, verschiedenste Charaktere mit diversen Eigenschaften und Bewegungsfähigkeiten, Features wie Sound und Effekte u.v.m.

Landschaften und Charaktere entwerfen

Sie beginnen mit einem kleinen Jump & Run-Spiel in 2D und lernen dann Schritt für Schritt, eigene Spielwelten in 3D zu erschaffen. Dabei erfahren Sie, wie man Landschaften mit Vegetation und Seen gestaltet. Außerdem bauen Sie einfache Gebäude und erschaffen einen Gegner, den Sie animieren und der mit der Zeit todbringende Eigenschaften erhält. Dabei eignen Sie sich ganz nebenbei das Programmieren in C# an und lernen alle Bausteine kennen, um eigene Ideen umzusetzen.

Realitätsnah mit hervorragenden Effekten

Das Unity-Entwicklungssystem erzeugt tolle Effekte, die dem Spiel das nötige Reality-Gefühl geben. Alles, was Sie zum Programmieren Ihrer Projekte benötigen, gibt es als Paket zum kostenlosen Download.

Aus dem Inhalt:

  • Unity starten und ein erstes kleines Spiel in 2D erstellen
  • In die Script-Programmierung mit C# einsteigen
  • Einen Charakter entwerfen und ihm Eigenschaften geben
  • Ein Jump & Run-Spiel entwickeln
  • Das Prinzip von 3D verstehen und ein Terrain mit Bäumen und Wasser gestalten
  • Ganze Bauwerke entstehen lassen
  • Die Figur klettern, schwimmen und sogar tauchen lassen
  • Eine Fantasie-Kreatur entwerfen und durch Animation lebendig werden lassen
  • Strahlen, Partikel und Sound einbinden
  • Künstliche Intelligenz nutzen
  • Energiekontrolle und andere Features aufrüsten
  • Installationshilfe und Fehlerbehebung

Zum Download unter www.mitp.de/0923: Die wichtigsten Projekte aus dem Buch

Systemvoraussetzungen:Windows 10 oder 11

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 293

Veröffentlichungsjahr: 2025

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



3D-Spiele programmieren mit Unity

Ganz einfach ohne Vorkenntnisse

Hans-Georg Schumann

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über https://portal.dnb.de/opac.htm abrufbar.

ISBN 978-3-7475-0925-8

1. Auflage 2025

www.mitp.de

E-Mail: [email protected]

Telefon: +49 7953 / 7189 - 079

Telefax: +49 7953 / 7189 - 082

© 2025 mitp Verlags GmbH & Co. KG, Augustinusstr. 9a, DE 50226 Frechen

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Dieses E-Book verwendet das EPUB-Format und ist optimiert für die Nutzung mit Apple Books auf dem iPad von Apple. Bei der Verwendung von anderen Readern kann es zu Darstellungsproblemen kommen.

Der Verlag räumt Ihnen mit dem Kauf des E-Books das Recht ein, die Inhalte im Rahmen des geltenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

Der Verlag schützt seine E-Books vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die E-Books mit einem nicht sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert. Bei Kauf in anderen E-Book-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.

Lektorat: Katja Völpel

Sprachkorrektorat: Jürgen Dubau

Covergestaltung: Christian Kalkert

Bildnachweis: © Damian Sobczyk / Photocreo Bednarek / stock.adobe.com

Satz: Petra Kleinwegen

electronic publication: CPI books GmbH, Leck

Inhaltsverzeichnis

Einleitung

E.1 Spielentwicklung

E.2 Und was ist Unity?

E.3 Voraussetzungen

1 Das erste Projekt

1.1 Unity starten

1.2 Ein Objekt zum Spielen

1.3 Gravitation und Kollision

1.4 2D oder 3D?

1.5 Ausblick

2 Script-Programmierung

2.1 Ein Script erstellen

2.2 Klassen und Methoden

2.3 if-Strukturen

2.4 Schubsen oder schieben?

2.5 Mal schwerelos, mal »bouncy«

2.6 Import und Export

2.7 Ausblick

3 Spielfigur als Sprite

3.1 Ein neues Spielobjekt

3.2 Bilder fürs Sprite

3.3 Ein Script für die Figur

3.4 Character Controller

3.5 Material und Textur

3.6 Ausblick

4 Jump & Run

4.1 Steuersystem

4.2 Das richtige Bild

4.3 Eigene Methoden

4.4 Laufen, Springen, Schubsen

4.5 Bouncy Ball

4.6 Trigger

4.7 Texturen

4.8 Ausblick

5 Sightseeing in 3D

5.1 Einfache 3D-Szene

5.2 Bewegte Kamera

5.3 Springen und Drehen

5.4 Player mit Kamera

5.5 3rd oder 1st Person?

5.6 Fertig-Player aus der Packung?

5.7 Ausblick

6 Landschaften

6.1 Von der Ebene zum Terrain

6.2 Ein Gelände gestalten

6.3 Rundgang und Asset-Suche

6.4 Landschaftspflege

6.5 Vegetation

6.6 Noch mehr Details?

6.7 Ausblick

7 Erde, Wasser, Luft

7.1 Auf und ab

7.2 Grenzkontrollen

7.3 Wind …

7.4 … und Wasser

7.5 Entschlackungskur

7.6 Kugel mit Rigidbody

7.7 Kollision mit Folgen

7.8 Ausblick

8 Bauwerke

8.1 Baumaterial

8.2 Platten legen

8.3 Prefab-Transport I

8.4 Prefab-Transport II

8.5 Innenansichten

8.6 Steigungen

8.7 Ausblick

9 Klettern und Schwimmen

9.1 Ein Kletter-Trigger

9.2 Der Player lernt klettern

9.3 Ein kleiner Schubs

9.4 See-Landschaft

9.5 Unterwasser-Atmosphäre

9.6 Waten, Schwimmen, Tauchen

9.7 Bewegungskontrolle

9.8 Ausblick

10 Animation und Navigation

10.1 Ein kleines Monster

10.2 Animator und Keyframes

10.3 Das »Ding« bewegt sich

10.4 Trigger-Animation

10.5 Ein Navigator für die Kreatur

10.6 Verfolgung an/aus

10.7 Hindernislauf

10.8 Ausblick

11 Leben oder Tod

11.1 Angriff und Verteidigung

11.2 Tödliche Kugeln

11.3 Animationen organisieren

11.4 Stehen – Gehen – Sterben

11.5 Tod des Players?

11.6 Die Kreatur wird zum Monster

11.7 Ausblick

12 Strahlen, Partikel und Sound

12.1 Raycasting

12.2 Todesstrahlen

12.3 Partikelsysteme

12.4 Flammenwerfer

12.5 Geräusche

12.6 Noch mehr Sound?

12.7 Ausblick

13 Game Tuning

13.1 Die Kreatur rüstet auf

13.2 Gesundheits-Balken

13.3 Energiekontrolle für den Player

13.4 … und für die Kreatur

13.5 Game Over

13.6 Aufmarsch der Gegner

13.7 Play the Game

13.8 Ausblick

Anhang

A.1 Unity installieren

A.2 Projekte und Links

A.3 Debugging

A.4 Kurze Checkliste

Einleitung

E.1    Spielentwicklung

Früher hat man ein Spiel komplett »von Hand« programmiert, also das gesamte Spiel in einer Programmiersprache. Anfangs hatte man nicht viele Möglichkeiten, deshalb begann alles mit viel Text. Grafik gab es eigentlich gar nicht, aber man versuchte, mit Textsymbolen etwas zu erzeugen, was dann wie ein einfacher Gegenstand oder gar eine Figur aussehen konnte.

Mit der Zeit entwickelten immer mehr findige Programmierer Module, mit denen sich dann auch komplexere Dinge erzeugen ließen. Und Spiele wurden immer ansehnlicher. Als dann die erste wirkliche Grafik möglich war, gab es alsbald auch Module, mit deren Hilfe sich immer besser aussehende Figuren und Gegenstände darstellen ließen, dann auch attraktivere Hintergründe.

Und irgendwann gab es dann eine umfangreiche Sammlung solcher Module, die als Spiele-Engine oder Game-Engine bezeichnet wurde. Weil Computer- und Konsolen-Spiele immer beliebter wurden, traten natürlich eine ganze Reihe von Herstellern auf den Plan. Die verwendeten oft ihre eigene Game-Engine. Mit der Zeit wurden dann auch Entwicklungssysteme für Spiele angeboten, die für jeden zugänglich waren – teilweise kostenlos, zum Teil kostenpflichtig.

E.2    Und was ist Unity?

Unity Technologies ist eine Firma, die ein umfangreiches System anbietet, mit dem man nicht nur Spiele programmieren kann. Die Game-Engine, mit der wir hier arbeiten, ist eine kostenlose Version. Zahlen muss man erst, wenn man viel Geld mit Spielen verdient (wieviel aktuell, das erfahren Sie über die Unity-Website).

Unity kann mit physikalischen Gesetzen umgehen, damit die Spielwelt mit ihren Figuren und Ereignissen in der jeweiligen Spielumgebung möglichst echt wirkt. Und dazu muss diese Engine komplexe grafische Effekte beherrschen, um für eine hervorragende Optik zu sorgen.

Mit Unity haben Sie nicht nur ein vollwertiges System für Spielentwicklung, das so vielfältige Möglichkeiten bietet, deren komplette Beschreibung nie in dieses Buch passen würde. Aber die wichtigsten lernen Sie hier kennen.

Mit dem visuellen Editor lässt sich ein Spiel bequem erstellen – und das nicht nur für Windows, sondern auch für andere Plattformen wie z.B. Linux, Android oder iOS.

Welche Unity-Version?

Ich selbst kenne Unity seit Version 5 (von 2016). Die danach folgenden Versionen wurden nach den Jahren benannt, in denen sie erschienen. Die aktuelle, in diesem Buch verwendete ist Version 6, was eigentlich nach der alten Zählung Unity 2024 wäre.

E.3    Voraussetzungen

Sie brauchen einen Computer mit folgenden Eigenschaften:

64 Bit Windows 10 oder 11, am besten die jeweils neueste Version

einen Prozessor vom Typ Intel Core-i oder AMD Ryzen Multi-Core, empfohlen Intel i5 oder schneller

eine nicht zu schwache Grafikkarte, die mit Microsoft DX10/11/12 funktioniert

RAM mit mindestens 4 GB RAM, empfohlen 8 oder 16 GB

freien Speicherplatz auf dem Datenträger von mehr als 20 GB

eine empfohlene Bildschirmauflösung mit 1920 x 1080

Grundsätzlich kann ein Mehr an Leistung und Platz nicht schaden.

Wie Unity heruntergeladen und installiert wird, erfahren Sie im Anhang. Die Projekte zum Buch können Sie in einem Paket von der Verlagsseite herunterladen:

https://www.mitp.de/0923

Beachten Sie dabei, dass die Projekte wahrscheinlich konvertiert werden müssen, denn von Unity erscheinen häufig neue Updates. Die Konvertierung erledigt Unity aber automatisch.

Kapitel 1

Das erste Projekt

Bevor Sie Ihr erstes Spiel erstellen können, müssen Sie sich noch ein bisschen gedulden. Erst einmal machen Sie sich etwas mit der »Maschine« vertraut, mit der Sie später ein Werk »zaubern« wollen, das sich sehen und spielen lässt. Schon hier beginnen wir mit einem Projekt. Und wir spielen auch schon mal ein bisschen mit einem Objekt herum.

1.1    Unity starten

Bevor wir mit dem »Basteln« anfangen können, muss das Game-Entwicklungssystem Unity installiert werden. Wie das geht, steht im Anhang. Danach kann es direkt losgehen.

Es gibt mehrere Wege, um Unity zu starten. Einer ist dieser:

1. Öffnen Sie den Ordner, in den Sie Unity installiert haben (bei mir ist das der Unterordner UNITY HUB im Ordner PROGRAMME auf Laufwerk C:).

2. Suchen Sie nun unter den vielen Symbolen eines heraus, das wie eine Art schwarzer Würfel aussieht, es muss den Namen Unity hub.exe tragen. Dann starten Sie das Programm mit einem Doppelklick auf das Symbol.

Start-Symbol

Weil wir Unity ja sehr oft starten werden, empfehle ich hier, eine Verknüpfung auf dem Desktop anzulegen:

Klicken Sie dazu mit der rechten Maustaste auf das entsprechende Unity-Symbol (Unity Hub.exe). Im Kontextmenü wählen Sie KOPIEREN.

Dann klicken Sie auf eine freie Stelle auf dem Desktop, ebenfalls mit der rechten Maustaste. Im Kontextmenü wählen Sie VERKNÜPFUNG EINFÜGEN.

Es ist sinnvoll, das neue Symbol auf dem Desktop umzubenennen, z.B. von UNITY HUB.EXE – VERKNÜPFUNG in einfach nur UNITY.

Von nun an doppelklicken Sie einfach auf das neue Symbol, und Unity wird gestartet.

Je nach Computer kann es eine Weile dauern, bis Unity Hub geladen ist. Einige Zeit später erscheint ein neues Fenster:

3. Klicken Sie dazu auf NEW PROJECT.

4. Wählen Sie im neuen Dialogfeld die Einstellung UNIVERSAL 2D.

Mit 3D beschäftigen wir uns später noch ausführlich.

5. Geben Sie dann im Feld für PROJECT NAME einen Namen für Ihr neues Projekt ein. Bei LOCATION sollte der Ordner stehen, in dem das Projekt untergebracht werden soll (wenn Sie nichts eingeben, schafft sich Unity seinen eigenen Ordner für Ihre Spielprojekte.)

Ich benutze einen Ordner UNITY und nenne mein erstes Projekt schlicht und einfach PROJEKT1.

6. Klicken Sie zum Abschluss auf CREATE PROJECT.

Es dauert nun eine Weile, bis Ihr Projekt in der Liste unter PROJECTS auftaucht.

Anschließend zeigt uns Unity endlich seine Arbeitsumgebung. Schauen wir uns erst einmal die Aufteilung der wichtigsten Fensterbereiche an:

Im GAME-Fenster ist es erst einmal leer. Da sehen Sie später Ihr Spiel in Echtzeit ablaufen, wenn Sie es durch einen der darüberliegenden Buttons gestartet haben.

Dahinter liegt das SCENE-Fenster. Und es gibt auch schon zwei Objekte: Kamera und Licht. Doch für ein Spiel brauchen wir dann noch mindestens ein weiteres Objekt wie eine Kugel oder eine Figur.

Im HIERARCHY-Fenster sind bis jetzt nur MAIN CAMERA und ggf. GLOBAL LIGHT aufgelistet. Dort stehen dann später auch alle Objekte, die zur Szene eines Spiels gehören (jedes Spiel könnte mehrere Szenen haben).

Das PROJECT-Fenster erfasst die Ordner mit dem gesamten Zubehör für alle Spielszenen. Dazu gehören natürlich u.a. auch Programmteile. Bilder, die Sie als Spiel-Objekt einsetzen wollen (wie z.B. eine Kugel oder eine Figur), lassen sich einfach mit der Maus aus einem Ordnerfenster unter Windows hier hineinziehen. Damit wird die entsprechende Datei ins Projekt kopiert.

Dahinter findet sich das CONSOLE-Fenster, das sich u.a. bei Fehlern meldet. Außerdem lassen sich dort Daten anzeigen, z.B. von Spiel-Objekten.

Um sich die Eigenschaften eines Objekts nicht nur anzuschauen, sondern auch bearbeiten zu können, gibt es das INSPECTOR-Fenster. Damit werden wir des Öfteren zu tun haben.

Schalten Sie mal vom GAME-Fenster ins SCENE-Fenster um.

In der Mitte ist das Symbol für die Kamera.

Wenn Sie im HIERARCHY-Fenster auf MAIN CAMERA klicken, zeigt der INSPECTOR plötzlich eine ganze Menge an (ändern sollten Sie aber daran nichts).

Mit dem Hauptmenü bekommen wir immer wieder zu tun. Die Bedeutung der meisten Menüpunkte klären wir nach und nach.

1.2    Ein Objekt zum Spielen

Wir beginnen mit etwas Einfachem. Dazu brauchen wir eine Kugel, und die soll sich über das Spielfeld bewegen lassen, z.B. mit der Maus oder mit den Tasten.

1. Klicken Sie oben im Hauptmenü auf GAMEOBJECT und dann auf den Eintrag 3D OBJECT. Im Zusatzmenü bekommen Sie nun eine Auswahl. Klicken Sie auf den Eintrag SPHERE (= Kugel).

Anschließend taucht im SCENE-Fenster etwas auf, das bei genauerem Hinsehen wie ein Kreis aussieht – aber irgendwie auch recht mickrig. Außerdem zeigt der INSPECTOR zahlreiche Informationen über unser neues Spiel-Objekt.

Dargestellt sind in der Mitte nun zwei Objekte: die Kamera (auf die wir noch zu sprechen kommen) und darunter oder dahinter die von uns erzeugte Kugel.

Nun ist es an der Zeit, die ganze Szene schon einmal zu speichern.

2. Klicken Sie auf FILE und SAVE.

SampleScene

In Unity heißt diese Szene zuerst SAMPLESCENE. Passt Ihnen der Name nicht, müssen Sie die Option SAVE AS wählen und im Dialogfeld einen Namen eingeben, z.B. KUGEL1 (wenn Ihnen nichts Besseres einfällt). Die Kennung UNITY wird automatisch angefügt. Dann klicken Sie auf SPEICHERN.

Wenn Sie anschließend im PROJECT-Fenster auf ASSETS klicken, sehen Sie den Ordner SCENES, darin befindet sich das Symbol für die Szenen-Dateien.

Dark oder Light

Bevor wir nun weitermachen, möchte ich Ihnen eine Möglichkeit vorstellen, die bisher dunkle Anzeige auf ein hellere umzustellen.

Suchen Sie im (sehr langen) EDIT-Menü nach dem Eintrag PREFERENCES und klicken Sie darauf.

Suchen Sie unter GENERAL den Eintrag EDITOR THEME. Dort wählen Sie LIGHT statt DARK.

Anschließend ist alles um einiges heller. Wenn es Ihnen gefällt, lassen Sie es so. Oder Sie kehren zurück zum Dark-Mode.

Ich werde ab jetzt hier im Buch den Light-Mode benutzen, weil die Abbildungen lesbarer sind. Sie selbst können frei wählen, ob Sie beim Dark-Mode bleiben oder auch in den Light-Mode wechseln.

Und nun schauen wir uns die ganze Szene einmal genauer an, und zwar in einem anderen Fenster.

1. Dazu schalten Sie mit Klick auf den Reiter mit dem Text GAME (direkt rechts neben dem SCENE-Reiter) die Anzeige um.

Im GAME-Fenster können Sie nun etwas sehen. Naja, wie eine Kugel schaut dieser schwarze Kreis (noch) nicht aus. Aber vielleicht lässt sich daran etwas ändern.

2. Klicken Sie im Hauptmenü auf GAMEOBJECT und dann auf LIGHT. Im Zusatzmenü wählen Sie den Eintrag DIRECTIONAL LIGHT.

Kurz darauf sehen Sie die Kugel in einem anderen Licht. Erkennt man das nur im GAME-Fenster?

3. Schalten Sie doch mal um zum SCENE-Fenster.

Dort gibt es auch eine Änderung, wie man sehen kann. Das neue Spiel-Objekt wird als Symbol aus Strahlen dargestellt.

Nun gibt es ein weiteres Objekt, und es liegt ebenso wie die Kugel in der Fenstermitte.

Licht-Objekte

Wenn Sie wollen, können Sie GLOBAL LIGHT auch entfernen: Markieren Sie den Eintrag und drücken Sie die Taste Entf.

Toll wäre es, wenn sich die Kugel bewegen würde. Doch wie kriegen wir sie dazu? Zuerst einmal sollten wir diesem »Ding« physikalische Eigenschaften geben. Dass das Objekt aussieht wie eine Kugel, heißt noch nicht, dass es sich auch wie eine Kugel aus einem bestimmten Material verhält.

1. Markieren Sie jetzt im HIERARCHY-Fenster (links) den Eintrag SPHERE. Dann schauen Sie im INSPECTOR-Fenster (rechts) nach einem Button mit der Aufschrift ADD COMPONENT und klicken darauf.

Ein kleines Kontextmenü öffnet sich.

2. Wählen Sie den Eintrag PHYSICS. Und im nächsten Menü klicken Sie auf RIGIDBODY.

Hauptmenü

Ein alternativer Weg führt über das Hauptmenü: Dazu klicken Sie sich über COMPONENT und PHYSICS zu RIGIDBODY durch.

Damit bekommt die Kugel (Sphere) einige physikalische Eigenschaften wie Masse (unsere Kugel wiegt also auf einmal etwas) und Gravitation (sie wird vom Boden angezogen, würde also aus der Luft herunter auf den Boden fallen). Auch Kollisionen mit anderen Objekten und ihre Folgen sind nun möglich (ich gehe später genauer auf Einzelheiten ein).

Komponente wieder entfernen?

Falls Sie aus Versehen eine falsche Komponente hinzugefügt haben: Wie werden Sie diese wieder los? Schauen Sie im INSPECTOR-Fenster mal genauer hin. Hinter jedem Komponenten-Namen sind ganz rechts drei kleine Pünktchen.

Klickt man darauf, öffnet sich ein Kontextmenü, in dem u.a. der Eintrag REMOVE COMPONENT zu finden ist (außer bei der TRANSFORM-Komponente, die lässt sich nicht entfernen).

Spiel-Hierarchie

Wie Sie sicher bemerkt haben, gibt es in Unity diese Hierarchie: Eine Szene umfasst mindestens ein Objekt vom Typ GAMEOBJECT. Die Kamera ist ja schon beim Erzeugen eines Projekts vorhanden. Dazu kommt dann so etwas wie eine Spielfigur. In unserem Fall ist das erst mal nur eine Kugel. Die hat dann verschiedene Komponenten, ebenfalls Objekte, nur vom Typ COMPONENT.

Die Komponente TRANSFORM hat jedes Spiel-Objekt »von Geburt an«. Weitere Komponenten lassen sich (fast) beliebig hinzufügen (aber auch wieder entfernen).

Wir sollten das Ganze schon einmal ausprobieren.

1. Wechseln Sie dazu ins GAME-Fenster.

2. Dann klicken Sie im Hauptmenü auf EDIT und suchen Sie den Eintrag PLAY. Oder Sie verwenden die Tastenkombination Strg+P.

Im ersten Moment passiert anscheinend nichts, dann auf einmal fällt die Kugel und verschwindet aus dem Spielfeld.

Start und Stopp

Start und Stopp eines Unity-Spiels können Sie auch über Buttons steuern. Ganz oben, direkt unter der Menüzeile, finden sich drei davon. Sie erinnern an die Steuerung z.B. bei Audio-Rekordern.

Das linke (mit dem Dreieck) ist der PLAY-Button. Per Mausklick lässt sich damit ein Spiel starten und stoppen. Mit dem mittleren Button können Sie das Spiel auch pausieren und dann weiterlaufen lassen.

1.3    Gravitation und Kollision

Irgendwie muss es nicht sein, dass die Kugel gleich nach dem Start als Spielfigur aus dem sichtbaren Bereich herausfällt. Damit das nicht passiert, könnte man die Gravitation ausschalten.

Andererseits kann die Gravitation einem beim Spielen nützlich sein. Denken Sie z.B. an ein Jump & Run-Game. Da geht es ja um Figuren, die springen und rennen, aber immer wieder irgendwo landen (und dazu brauchen sie die »Erdanziehungskraft«).

Eine andere und bessere Möglichkeit wäre es, für das Spielfeld eine untere Grenze zu verwenden. Das könnte ein Quader sein. Probieren wir’s aus.

1. Klicken Sie im Hauptmenü auf GAMEOBJECT und dann auf 3D OBJECT. Im Zusatzmenü suchen Sie diesmal den Eintrag CUBE (= Würfel) und klicken darauf.

Im SCENE-Fenster hat sich nun über den Kreis so etwas wie ein Quadrat gelegt. Auch hier zeigt der INSPECTOR zahlreiche Informationen über das neue Spiel-Objekt.

2. Vielleicht ist es sinnvoll, die Szene erst einmal wieder speichern (mit Klick auf FILE und SAVE).

Aktuell ist der Quader noch ein Würfel, später könnte man daraus eine Platte machen. Doch erst einmal suchen wir eine Möglichkeit, den Quader nach unten zu verschieben. Grundsätzlich gibt es da zwei Möglichkeiten:

Man packt das Objekt im SCENE-Fenster mit der Maus und zieht es nach unten (das Ganze geht natürlich auch in andere Richtungen).

Man ändert die Werte für POSITION im INSPECTOR-Fenster. Genauer: den y-Wert auf -1.

3. Sorgen Sie dafür, dass der Quader direkt unter der Kugel liegt.

4. Und nun können Sie sich im GAME-Fenster anschauen, was passiert, wenn Sie das Spiel starten (damit man mehr sehen kann, habe ich SCALE auf 2,5x eingestellt).

Zoom

Man kann auch mit dem Mauszeiger ins SCENE-Fenster fahren und das Rollrad der Maus zum Zoomen benutzen.

Nichts passiert? Ja und nein. Die Kugel versucht wohl zu fallen, wird aber vom Quader aufgehalten. Der verhindert, dass hier die Gravitation sichtbar wird. Denn die Kugel liegt auf dem Quader.

5. Verschieben Sie nun den Quader bis zum Spielfeldrand nach unten. Achten Sie darauf, dass er möglichst genau unter der Kugel liegt.

Bei mir steht im INSPECTOR-Fenster hinter POSITION der y-Wert -5. Bei Ihnen kann da natürlich auch etwas anderes stehen.

Verschiedene Positionen?

Vielleicht haben Sie hin und wieder den Eindruck, dass die Position eines Objekts im SCENE-Fenster anders ist als im GAME-Fenster. Das hängt mit der Kamera zusammen. Die allein bestimmt, was im GAME-Fenster wo zu sehen ist.

Wenn Sie wollen, können Sie die Kamera (MAIN CAMERA) mal anklicken, damit sie markiert ist. Dann lässt sie sich verschieben, ebenso wie eine Kugel oder ein Quader. Und damit ändert sich auch die Perspektive im GAME-Fenster. Über EDIT/UNDO oder Strg+Z lässt sich diese Verschiebung wieder rückgängig machen.

6. Starten Sie das Spiel nun erneut und schauen Sie zu, wie die Kugel fällt und auf dem Quader landet – eigentlich wie zu erwarten, oder?

Dass dies keine Selbstverständlichkeit ist, werden Sie gleich sehen. Verantwortlich dafür, dass die Kugel auf dem Quader landet und nicht weiterfällt, ist nicht die Gravitation, sondern eine andere Eigenschaft, die sie von Anfang an hatte – ebenso wie der Quader.

Schauen wir mal ins INSPECTOR-Fenster. Dort finden wir unter den Eigenschaften (auch Komponenten genannt) jeweils einen Sphere-Collider und einen Box-Collider für Kugel beziehungsweise Quader.

Kollisionslos

Machen wir mal einen Test: Wenn Sie das Häkchen vor einem dieser beiden Einträge entfernen und dann das Spiel erneut starten – z.B. mit dem Play-Button (oder über EDIT und PLAY), dann können Sie beobachten, dass die Kugel nun einfach durch den Quader hindurchfällt, ein Objekt ist für das andere sozusagen »Luft«.

Collider

Was ist ein Collider? Das hat etwas mit Kollision zu tun. Wenn zwei Objekte aufeinandertreffen, dann spricht man von einer Kollision. Das kann eine sanfte oder eine harte Kollision sein. Das Verhalten bei einer solchen »Begegnung« wird in Unity über Collider gesteuert.

Alle betroffenen Objekte müssen also Collider haben. Dabei hat nicht jedes Objekt den gleichen Collider-Typ. Jeder Collider lässt sich aktivieren und deaktivieren. Das ist nützlich, denn manchmal soll keine Kollision stattfinden, dann lassen sich die Collider ausschalten.

1.4    2D oder 3D?

Halten wir jetzt erst einmal inne und schauen uns im INSPECTOR-Fenster mal genauer um. Und zwar auf das, was unter TRANSFORM steht. Ich habe das in einer Tabelle zusammengefasst. So sieht es für ein Objekt aus, das gerade erzeugt wurde:

Es gibt hier drei Möglichkeiten, etwas mit einem Objekt »anzustellen«. Die erste Möglichkeit haben Sie bereits kennengelernt, als Sie den Quader nach unten verschoben haben.

Die zweite Möglichkeit, ein Objekt zu drehen, brauchen wir jetzt noch nicht. Bei einer Kugel sieht man davon nichts (es sei denn, das Licht ändert sich mit), bei einem Quader schon.

1. Da sollten Sie gleich mal ausprobieren: Setzen Sie im INSPECTOR-Fenster unter ROTATION für Z z.B. den Wert 45 ein.

Und schon wird der Würfel um 45 Grad gedreht.

Die dritte Möglichkeit der Transformation eines Objekts ist die Veränderung der Maße (Skalierung). Davon wollen wir jetzt Gebrauch machen. Denn der Quader sieht ein bisschen mickrig aus. Warum machen wir aus ihm nicht einen Balken, der den ganzen unteren Spielfeldrand abdeckt?

2. Machen Sie zuerst die Drehung wieder rückgängig, dann ändern Sie im INSPECTOR-Fenster unter SCALE für X den Wert – mit einer Zahl zwischen 10 und 15.

Damit ist der Quader sozusagen die Bodenplatte, auf die die Kugel fällt.

3. Speichern Sie nun die Szene, dann starten Sie das Spiel und schauen zu.

Ist das jetzt 2D oder 3D? Diese Frage haben Sie sich vielleicht schon viel früher gestellt. Genau genommen haben wir es die ganze Zeit mit Objekten zu tun, die dreidimensional sind. Da wir uns erst mal nur im 2D-Bereich (hier auf einer Fläche mit Höhe und Breite) bewegen wollen, haben wir beim Erzeugen des Projekts die 2D-Ansicht eingeschaltet.

2D oder 3D

Man sieht das im SCENE-Fenster an dem kleinen »eingedrückten« 2D-Button (der liegt weiter rechts):

Hier lässt sich die Anzeige zwischen 2D und 3D umschalten. Im 3D-Modus ist die Anzeige 2D durchgestrichen.

Bei der Kugel sieht man den Unterschied nicht so stark, beim Quader schon, der wird in 2D nur als blasses Rechteck dargestellt. (Würde man das Licht »ausschalten«, dann wäre die Kugel in 2D auch nur ein Kreis.)

Das klassische Koordinatensystem besteht normalerweise aus der x-Achse (Horizontale bzw. Waagerechte) und der y-Achse (Vertikale bzw. Senkrechte).

Entlang der x-Achse geht es also nach links oder rechts, entlang der y-Achse nach oben oder unten. Der Ursprung befindet sich genau in der Mitte. Der Punkt dort hat die Koordinaten (0 | 0).

Das ist auch in Unity so, doch weil Unity auch ein System für 3D-Spiele ist, reichen keine zwei Achsen. Sondern es muss da noch eine dritte geben, z-Achse genannt. An der entlang geht es nach vorn oder nach hinten.

Schaut man von vorn auf das Koordinatensystem, dann kann man diese Achse nicht sehen. Um alle Achsen dennoch in 2D sichtbar zu machen, greift man zu einem optischen Trick: Die z-Achse wird dann als Diagonale dargestellt.

Wenden wir uns wieder dem INSPECTOR-Fenster zu, dort sind ja unter TRANSFORM alle drei Koordinaten aufgeführt. Wenn man dort unter POSITION und SCALE z.B. für den Quader den Wert hinter Z ändert, wird man bei 2D-Ansicht im SCENE-Fenster nichts davon bemerken (außer wenn bei SCALE der Wert von Z = 0 wäre). In Wirklichkeit aber verschiebt sich der Quader nach hinten oder nach vorn oder er dehnt sich in diese Richtungen aus.

Wenn Sie Lust zum Experimentieren haben, dann schauen Sie der Kugel noch einmal beim Fallen zu, nachdem die »Bodenplatte« (bei gleicher Größe) nach vorn oder hinten verschoben wurde. Ergebnis: Die Kugel fällt weiter, weil sie ja nicht mehr auf den Quader trifft.

Sobald aber der Quader nach hinten und vorn ausreichend zu einer großen Plattform vergrößert wird, bekommt die Kugel wieder »Boden unter den Füßen«.

Transformationen mit der Maus

Wie man ein Objekt mit der Maus verschiebt, wissen Sie ja im Prinzip. Allerdings ist dazu eine bestimmte Einstellung nötig. Sie finden links oben im SCENE-Fenster oder direkt unter dem Hauptmenü eine Reihe von Buttons.

Darüber kann man Objekte mit der Maus verschieben (POSITION-Modus), die Größe ändern (SCALE-Modus) oder das Objekt drehen (ROTATION-Modus).

Die Umschaltung geht auch mit den Tasten WER

Falls Sie diese Buttons mal nicht finden oder sehen, lassen sie sich so wiederherstellen: Klick mit der rechten Maustaste auf den SCENE-Reiter, im Menü den Eintrag OVERLAY-MENU und dann im nächsten Menü auf TOOLS.

Auch wenn wir fürs Erste im 2D-Bereich bleiben werden, kann es nicht schaden, mal einen genaueren Blick auf die 3D-Ansicht zu werfen.

1. Klicken Sie oben (rechts) auf die Schaltfläche 2D.

Die 3D-Ansicht der Szene hatten wir ja weiter oben schon mal. Man sieht die Kugel nicht in der Mitte liegen. Die Kamera schaut aus einiger Entfernung von weiter hinten zu. Beim Quader, den ich »Bodenplatte« genannt habe, sieht man die Ausdehnung in die Tiefe. Und ganz oben rechts wird die aktuelle Perspektive angezeigt.

Um das Ganze auch mal im GAME-Fenster zu sehen, müssen wir die Kamerasicht im INSPECTOR-Fenster umschalten.

2. Markieren Sie dazu den Eintrag MAIN CAMERA links im HIERARCHY-Fenster.

Würde ich jetzt ins Game-Fenster umschalten, wäre dort aber noch immer die 2D-Ansicht zu sehen.

3. Deshalb klicken Sie jetzt rechts im INSPECTOR-Fenster hinter PROJECTION auf ORTHOGRAPHIC. In dem kleinen Zusatzmenü wählen Sie den Eintrag PERSPECTIVE.

4. Wechseln Sie nun zum GAME-Fenster, dann sieht man den kompletten Boden.

Allzu toll sieht es nicht aus, auch weil alles nur weiß bis grau auf blauem Hintergrund zu sehen ist.

5. Nicht nur deshalb sollten Sie wieder auf die ORTHOGRAPHIC-Ansicht zurückgehen. Denn wir bleiben ja erst einmal im 2D-Bereich.

1.5    Ausblick

Unser erstes kleines Projekt ist damit fertig. Nichts Besonderes, aber auch nicht übel für den Anfang. Zuletzt sollen Sie noch wissen, wie man den Spiel-Objekten einen anderen Namen geben kann. Dazu muss das jeweilige Objekt im HIERARCHY-Fenster markiert sein.

6. Markieren Sie das jeweilige Objekt im HIERARCHY-Fenster, zum Beispiel SPHERE. Dann drücken Sie die Taste F2.

Nun kann man durch direktes Neueintippen den alten Namen überschreiben. Bei mir heißt die Kugel nun »Kugel« und der Quader bekommt den Namen »Boden«.

Speichern Sie dann am besten das ganze Projekt:

Und damit wird es Zeit, Unity erst mal wieder zu verlassen.

7. Dazu klicken Sie auf FILE und dann auf EXIT. Oder Sie klicken im Hauptfenster ganz oben rechts auf das kleine X – wie auch bei anderen Programmen üblich.

Damit wäre eine Verschnaufpause fällig. Sie wissen nun schon, wie man ein (kleines) Projekt erstellt und dass dies aus mindestens einer Szene und einem Spiel-Objekt besteht. Und Sie wissen auch, wie man ein Objekt erzeugt (über GAMEOBJECT) und eine Komponente hinzufügt (über COMPONENT).

Hier nochmal einige wichtige Elemente eines Spiel-Projekts im Überblick:

Für jedes Objekt gibt es eine Transformations-Komponente mit diesen Optionen:

Kapitel 2

Script-Programmierung

Nun haben wir eine Kugel. Sie kann ohne unser Zutun fallen oder rollen – wenn es bergab geht. Das bewirken ihre physikalischen Eigenschaften. Aber diese Kugel – quasi unsere erste Spielfigur – lässt sich nicht steuern. Wir brauchen also einen Weg, um die Kugel zu kontrollieren. Und den suchen und finden wir in diesem Kapitel.

2.1    Ein Script erstellen

In Unity gibt man einer Spielfigur eine Art Drehbuch, Script genannt. Darin steht, was sie zu tun hat. Unsere Spielfigur ist hier die Kugel.

Assets

Für unser erstes Drehbuch benutzen wir in jedem Projekt einen eigenen Assets-Ordner. Doch was sind eigentlich Assets? Darunter versteht man die Zutaten zu einem Spiel. Also alles, was dazugehört, damit »es läuft«.

Auf jeden Fall sind das Spiel-Objekte, die in unserem Fall in der Szene-Datei untergebracht sind. Und natürlich auch Scripts. Damit alles schön aufgeräumt ist, kann man unter dem Hauptordner für Assets Unterordner anlegen, in die man seine Zutaten hineinpackt.

Einen Unterordner gibt es schon, und der heißt Scenes.

Darin liegen die Dateien für die aktuelle Spiel-Szene, im Moment ist das SAMPLESCENE.UNITY oder KUGEL1.UNITY.

1. Klicken Sie im Hauptmenü von Unity auf ASSETS, dann wählen Sie den EintragCREATE und im Zusatzmenü FOLDER (Deutsch: Ordner).

Ganz unten im PROJECT-Fenster taucht nun ein Ordnersymbol auf. Dort lässt sich der Name ändern.

2. Drücken Sie ggf. F2, geben Sie dem Ordner den Namen SCRIPTS.

Extra-Ordner?

Ich habe bei der Gelegenheit gleich einen weiteren Ordner namens SYSTEM erstellt und dort die von Unity erzeugten Elemente hineingeschoben, die außerhalb aller anderen Ordner lagen.

Nun brauchen wir eine Script-Datei, die wir als Nächstes erzeugen.

3. Dazu markieren Sie im HIERARCHY-Fenster den Eintrag SPHERE oderKUGEL (unsere Spielfigur). Dann klicken Sie unten rechts im INSPECTOR-Fenster auf ADD COMPONENT.

Das Kontextmenü, das sich öffnet, kennen Sie bereits.

4. Wählen Sie dort den Eintrag NEW SCRIPT (ziemlich weit unten).

5. Im folgenden Fensterchen geben Sie dem Script einen Namen, z.B. SPHERECONTROL oder KUGELKONTROLLE oder was Ihnen Passendes einfällt. Dann klicken Sie auf CREATE AND ADD.

Und schon hat das PROJECT-Fenster ein neues Symbol.

Eine andere Möglichkeit, ein Script zu erstellen, geht über das Hauptmenü. Dort klickt man auf ASSETS, dann auf CREATE und im Zusatzmenü auf MONOBEHAVIOUR SCRIPT.

Danach muss das Script-Symbol auf ein Objekt im HIERARCHY-Fenster geschoben werden, wodurch es zur Komponente dieses Objekts wird.

Script-Komponente

Auch ein Script kann eine Komponente sein, wie man unschwer erkennt, wenn man das Spiel-Objekt KUGEL markiert und nach rechts ins INSPECTOR-Fenster schaut. Man nennt das Script auch BEHAVIOUR-Komponente, denn darin wird das Verhalten eines Spiel-Objekts beschrieben.

Ein Script braucht seine eigene Sprache. Das heißt: Wir können nicht einfach etwas auf Deutsch hineinschreiben wie »Spring auf Tastendruck oder Mausklick wieder zurück nach oben«, sondern die Anweisungen müssen ganz präzise in einer bestimmten Programmiersprache verfasst sein. Diese ist hier C# (gesprochen C-sharp). Und deren Wortschatz besteht aus englischen Wörtern.

1. Schieben Sie jetzt zuerst einmal das SCRIPT-Symbol mit der Maus in den extra dafür angelegten Ordner SCRIPTS.

Und nun schauen wir mal, was ins Drehbuch hinein soll. Wenn Sie das Script-Symbol anklicken, sehen Sie im INSPECTOR-Fenster, dass da offenbar schon einiges an Text drinsteht.

Wie bearbeiten wir nun diesen Text? Wir brauchen dazu einen Editor, der nicht direkt zu Unity gehört. Unity verwendet Visual Studio von Microsoft. Eine aktuelle Version davon wurde bei der Einrichtung von Unity mitinstalliert (siehe Anhang).

2. Klicken Sie also mit der rechten Maustaste auf das SCRIPT-Symbol und wählen Sie im Kontextmenü den Eintrag OPEN. Das Ganze funktioniert auch mit einem Doppelklick auf das Symbol.

Beim ersten Start von Visual Studio wird dieses konfiguriert. Darüber informiert eine entsprechende Meldung (hier können Sie auch einstellen, wie die Umgebung von Visual Studio aussehen soll).

Das Fenster, in dem Sie dann landen, wird auch Editorfenster genannt. Hier kommt u.a. der Text für die Anweisungen für Spielobjekte hin.

3. Wenn Sie nichts vom Script-Text sehen, müssen Sie sich rechts über die Ordnerstruktur zur Datei mit dem Namen SPHERECONTROL.CS durchklicken. (Das »cs« ist eine Abkürzung für »C-sharp«, wie C# ja ausgesprochen wird.

Visual Studio Version

Wenn das Fenster von Visual Studio nicht genauso aussieht wie da oben, dann kann es daran liegen: Weil Visual Studio und Unity von zwei verschiedenen Firmen kommen, haben die Produkte voneinander unabhängige Entwicklungsphasen. Doch im Prinzip funktionieren alle Versionen von Visual Studio gleich.

Und das steht schon in der Datei drin:

So etwas nennt man Quelltext. Hier wird wie in einem Drehbuch näher beschrieben, wie sich ein Objekt verhalten soll.

Sollten Sie noch nie programmiert haben, können Sie womöglich anfangs gar nichts mit diesem Text anfangen. Doch das kommt mit der Zeit, nach und nach werden Sie mehr und mehr verstehen.

Die erste Zeile beginnt mit using. Der dahinterstehende Name bezeichnet eine sogenannte Bibliothek, die den Wortschatz der Sprache C# erweitert:

In UnityEngine befinden sich die Klassen und Methoden zur direkten Programmierung u.a. der Spiel-Objekte. Darüber lässt sich z.B. die Position unserer Kugel oder ihre Größe während des Spielverlaufs verändern. Diese Bibliothek wurde von Unity erstellt.

Sprachwortschatz

C# hat zunächst einen nur kleinen, aber kompakten Grundwortschatz. Alles andere ist in Bibliotheken ausgelagert, die sich über using in ein Projekt einbinden lassen. Der Vorteil ist, dass jeder sich eigene Bibliotheken erstellen kann, die zum jeweiligen Entwicklungssystem passen. Für Unity gibt es eine Menge nützlicher Bibliotheken, mit denen C# erweitert wurde.

2.2    Klassen und Methoden

Alles, was wir an Drehbuchanweisungen für das Verhalten der Kugel in unser Script schreiben, wird in einer Klasse zusammengefasst. Ich habe der Script-Datei und damit dieser Klasse den Namen SphereControl gegeben. Ich will ja mit meinen Anweisungen die Kugel kontrollieren, also bestimmen, was sie macht. So sieht die zugehörige Klassendefinition aus, wenn noch gar nichts drinsteht:

Bei der Definition von Klassen wird immer das Wort class verwendet (ein sogenanntes Schlüsselwort). Ein Paar geschweifter Klammern markiert den Anfang und das Ende des Inhalts.

Das nachgestellte MonoBehaviour bedeutet, dass unsere Klasse von einer Basisklasse abgeleitet wurde und damit schon einige Grundfähigkeiten geerbt hat. Daher auch der Name MonoBehaviour-Script.

Von dieser Basisklasse sollte jede Script-Klasse abgeleitet werden. Damit stehen automatisch einige Methoden zur Verfügung – so wie die folgenden zwei:

In Start() kommt alles hinein, was das Objekt bei seiner Erzeugung an Fähigkeiten haben soll. Diese Methode wird beim Spielstart einmal ausgeführt, noch vor jeder anderen Methode, also auch vor Update()