Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Unity ist eine sehr beliebte Spiele-Engine, mit der du eigene 3D-Spiele entwickeln kannst. Der erfahrene Kids-Autor Hans-Georg Schumann zeigt dir, wie du mit Unity und der Programmiersprache C# schnell zu beeindruckenden Ergebnissen kommst.
Schritt für Schritt lernst du, wie du Figuren durch die Welt wandern und auch gegen gefährliche Gegner kämpfen lässt. Du erstellst Landschaften mit Bäumen und Seen, gestaltest und animierst eigene Charaktere, und lernst ganz nebenbei das Programmieren in C#. Das Unity-Partikelsystem erzeugt tolle Effekte mit Licht und Schatten, die dem Spiel das nötige Reality-Gefühl geben. Und alles, was du zum Programmieren deiner Spiele brauchst, findest du auch zum Download.
Aus dem Inhalt:Zum Download: Alle Projekte aus dem Buch und die Lösungen zu den Aufgaben
Systemvoraussetzungen:Windows 10
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 327
Veröffentlichungsjahr: 2020
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
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 <http://dnb.d-nb.de> abrufbar.
ISBN 978-3-7475-0172-6 2. Auflage 2021
www.mitp.de E-Mail: [email protected] Telefon: +49 7953 / 7189 - 079 Telefax: +49 7953 / 7189 - 082
© 2021 mitp Verlags GmbH & Co. KG
Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.
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.
Lektorat: Katja Völpel Korrektorat: Claudia Fluor Covergestaltung: Christian Kalkert, Sandrina Dralle Covergrafik: Adobe Stock/Do Raelectronic publication: III-satz, Husby, www.drei-satz.de
Dieses Ebook verwendet das ePub-Format und ist optimiert für die Nutzung mit dem iBooks-reader auf dem iPad von Apple. Bei der Verwendung anderer Reader kann es zu Darstellungsproblemen kommen.
Der Verlag räumt Ihnen mit dem Kauf des ebooks 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 Urheherrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und Einspeicherung und Verarbeitung in elektronischen Systemen.
Der Verlag schützt seine ebooks vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die ebooks mit einem nicht sichtbaren digitalen Wasserzeichen individuell pro Nutzer signiert.
Bei Kauf in anderen ebook-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.
FürJanne, Julia, Daniel und Katrin
Eigene Fantasiewelten erschaffen, in denen man sich frei bewegen kann. Selbst gebauten Figuren begegnen. Abenteuer selbst erfinden, den Verlauf von Ereignissen und diese selbst bestimmen: Wie wäre das?
Um ein Spiel selbst zu erstellen, muss man vom Programmieren anfangs eigentlich noch gar nichts verstehen. Denn zuallererst braucht man eine Idee und dann einen Plan.
Wovon soll das Spiel handeln? Welche Geschichte soll es erzählen? Personen, Orte und Ereignisse, all das führt zu einem Plan, der umfasst, was zu diesem Spiel gehören soll. Und erst, wenn der Plan »steht«, kann die eigentliche Umsetzung in ein Programmprojekt beginnen. Dann allerdings sollte man schon möglichst gut programmieren können.
Wie du auf eine gute Idee kommst, wie du deine eigene Geschichte »strickst« und wie du einen Plan für ein Spiel aufstellst, wirst du in diesem Buch nicht erfahren. Hier bekommst du einen Kasten voller Werkzeuge, mit dem du deinen Plan in ein Spiel umsetzen kannst.
Wir wollen auch gar nicht so hoch hinaus: Ein professionelles Game wird heutzutage ja von einer ganzen Gruppe von Leuten erstellt, darunter Designer, Künstler, Techniker und nicht zuletzt natürlich Programmierer.
Trotzdem dauert die Arbeitszeit häufig mindestens Monate, wenn nicht Jahre. Die Beteiligten machen einen Vollzeitjob, es ist ihr Beruf. Hier hast du als Einzelgänger nur eine Chance, wenn deine Spiel-Idee so hervorragend und einmalig ist, dass sie andere überschattet.
Bleiben wir also auf dem harten Boden der Tatsachen und planen nicht ein gigantisches Meisterwerk, sondern kümmern uns um solide Grundlagen. Wenn du die beherrschst, hast du durchaus Voraussetzungen, auch einmal an einem professionellen Spielprojekt mitzuwirken.
Um Spiele im 2D- und 3D-Bereich zu erstellen, brauchen wir als Herzstück eine sogenannte Game-Engine. Sie muss mit physikalischen Gesetzen umgehen können, damit die Spielwelt mit ihren Figuren und Ereignissen möglichst echt wirkt. Und sie muss komplexe grafische Effekte beherrschen, damit das Ganze auch optisch etwas hermacht.
Das brauchst du:
Mit Unity (früher Unity3D) haben wir nicht nur eine vollwertige Engine, die so vielfältige Möglichkeiten bietet, dass dieses Buch allein nicht reicht, um alles zu beschreiben. 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. Android oder iOS.
Wir verwenden hier die derzeit aktuelle Unity-Version 2020 (für eventuelle Neuerungen schaust du am besten unter unity.com nach).
Die visuelle Entwicklungsumgebung, die Unity mit sich bringt, bietet schon viele Möglichkeiten, sich Elemente für ein Spiel zusammenzustellen. Damit aber alles wie gewünscht funktioniert und um die volle Leistung der Engine abzurufen, braucht man ein Programmiersystem:
Visual Studio bietet die Möglichkeit, die für Unity nötigen Skripts in einer passenden Programmiersprache, nämlich C#, zu erstellen. Dieses System gibt es kostenlos bei Microsoft (unter visualstudio.microsoft.com). Es kann aber auch über die Unity-Installation automatisch so eingerichtet werden, dass es aus Unity heraus einsetzbar ist.
Damit wir auch eigene Welten und eigene Akteure für unsere Spiele erstellen können, gibt es in Unity weitere leistungsstarke Hilfsmittel, wie z.B. einen Editor u.a. für Landschaften und Bäume. Viele mit anderen Programmen hergestellte Figuren und Elemente lassen sich leicht in Unity importieren und dort einsetzen.
Richtig los geht es wie bei jedem Buch in Kapitel 1. Bist du ein erfahrener C#-Programmierer, so wird es für dich kein Problem sein, auch dort zu starten. Willst du aber dein C#-Wissen lieber noch mal überprüfen oder festigen, dann kannst du dies in einem vorgeschalteten Kapitel tun, das du zum Download auf der Homepage www.mitp.de/0170 findest.
Ansonsten erfährst du hier u.a.,
wie man in Unity Spiele mit Sprites programmieren kann,
wie man den 1st-Person und den 3rd-Person-Modus einsetzt,
wie man Landschaften gestaltet und einfache Gebäude baut,
wie man klettert, schwimmt und taucht,
wie man einfache Figuren erstellt und sie animiert,
wie man künstliche Intelligenz nutzen kann,
wie man Effekte erzeugt und Sound einsetzt.
Im Anhang gibt es dann noch zusätzliche Informationen, z.B. wie man Unity und Visual Studio installiert und wie man Fehler vermeidet.
Um dir den Weg vom ersten 2D-Projekt bis zu einem 3D-Game mit Akteuren einfacher zu machen, gibt es einige zusätzliche Symbole, die ich dir hier gern erklären möchte:
Wenn du dieses Zeichen siehst, heißt das: Es gibt etwas zu tun. Damit kommen wir beim Programmieren Schritt für Schritt einem neuen Ziel immer näher.
Grundsätzlich lernt man besser, wenn man Objekte selbst einsetzt oder einen Programmtext selbst eintippt oder ändert. Aber nicht immer hat man große Lust dazu. Weil alle Projekte im Buch auch in einem Download-Paket verfügbar sind, findest du hinter einem Programmierschritt auch den Namen des jeweiligen Projekt-Ordners (z.B. Game1). Wenn du also bestimmte Projekte nicht selbst erstellen willst, kannst du stattdessen die dazugehörigen Dateien herunterladen (zu finden unter mitp.de/0170).
Am Ende eines Kapitels gibt es jeweils eine Reihe von Fragen und Aufgaben. Diese Übungen sind nicht immer ganz einfach, aber sie helfen dir, deine Spiele noch besser zu entwickeln. Lösungen zu den Aufgaben findest du auch im Download von der mitp-Seite (dort findest du auch die Programme zu den Aufgaben).
Du kannst sie dir alle im Editor von Windows oder auch in deinem Textverarbeitungsprogramm anschauen. Oder du lässt sie dir ausdrucken und hast sie dann schwarz auf weiß, um sie neben deinen PC zu legen.
Vielleicht hast du irgendetwas falsch gemacht oder etwas vergessen. Oder es wird gerade knifflig. Dann fragst du dich, was du nun tun sollst. Bei diesem Symbol findest du eine Lösungsmöglichkeit. Notfalls kannst du aber auch ganz hinten im Anhang B nachschauen, um ein paar Hinweise zur Pannenhilfe zu finden.
Hin und wieder findest du ein solch dickes Ausrufezeichen im Buch. Dann ist das eine Stelle, an der etwas besonders Wichtiges steht.
Wenn du ein solches »Wow« siehst, geht es um ausführlichere Informationen zu einem Thema.
Du findest das Unity-Paket als komplette Entwicklungsumgebung zu Download und Installation auf der entsprechenden Seite von Unity:
https://unity.com/
Zusätzlich gibt es dort noch eine Sammlung von Hilfsmitteln, die sogenannten Assets. Du findest dort auch eine Menge Zusatzmaterial. Während Unity dich nichts kostet, solange du nicht damit Geld verdienen willst, sind viele Zusätze nicht kostenlos.
Die Beispielprojekte in diesem Buch findest du ebenso wie die Lösungen zu den Aufgaben auf der Homepage des Verlags in der gerade aktuellen Version:
http://www.mitp.de/0170
Die Programmbeispiele sind mit einer Unity-Version erstellt, die vielleicht schon nicht mehr die allerneueste ist, wenn du dieses Buch kaufst oder eine Weile besitzt. Denn Unity wird natürlich ständig weiterentwickelt. Wenn du eines der Projekte in einer neueren Unity-Version öffnest, bekommst du eine solche Meldung:
Mit einem Klick auf Confirm wird das alte Projekt für die aktuelle Unity-Version umgewandelt.
Die meisten Computer arbeiten heute mit dem Betriebssystem Windows. Am besten geeignet ist Version 10. Mit Unity lassen sich allerdings nicht nur Spiele für Windows entwickeln, sondern auch für andere Systeme wie Googles Android, Apples iOS, ja sogar Microsofts Xbox und Sonys Playstation.
Auf jeden Fall benötigst du etwas wie einen USB-Stick oder eine SD-Card, auch wenn du deine Programme auf die Festplatte speichern willst. Auf einem externen Speicher sind deine Arbeiten auf jeden Fall zusätzlich sicher aufgehoben.
Gegebenenfalls bitte deine Eltern oder Lehrer um Hilfe.
Vielleicht kennst du bereits eine andere Programmiersprache, wie z.B. JavaScript, Python oder auch Basic. Dann sollte dir der Umstieg auf C# nicht schwer fallen. Im Idealfall hast du bereits in C# programmiert und bist mit den Grundlagen vertraut.
Aber auch wenn du keine Ahnung vom Programmieren, aber unbändige Lust auf die Spiele-Programmierung mit Unity hast, kannst du einfach so in Kapitel 1 einsteigen und versuchen, mitzukommen. Programmiert wird erst ab Kapitel 2.
Dieses Buch lässt sich selbstverständlich auch für den Informatik-Unterricht verwenden. Dort setzt natürlich jeder Lehrer seine eigenen Schwerpunkte. Aber wenn es z.B. um eine Programmier-AG oder einen Informatikkurs mit Schwerpunkt Spieleprogrammierung geht, lässt sich dieses Buch in Ergänzung zu Ihrem Lehrmaterial gut einsetzen. Mit Unity steht Ihnen und Ihren Schülern ein mächtiges Entwicklungswerkzeug zur Verfügung.
Was die Programmierung angeht, so wird hier die Sprache C# genutzt, die der Programmiersprache Java recht ähnlich, aus meiner Sicht aber einfacher zu erlernen und einzusetzen ist, weil C# die Vorteile vieler anderer Sprachen vereint und nur wenige Nachteile hat.
Die einzelnen Spielprojekte werden vorwiegend über den visuellen Editor von Unity erstellt, die Programmierung in C# dient der Erstellung von Scripts, um den Spielverlauf zu steuern. Zahlreiche Fragen und Aufgaben mit Lösungen helfen, Gelerntes zu festigen und zu vertiefen.
Für den Informatik-Unterricht sollte jeder Schüler ein eigenes externes Speichermedium haben, um darauf seine Versuche zu sichern. So wird verhindert, dass sich auf der Festplatte des Schulcomputers mit der Zeit allerlei »Datenmüll« ansammelt. Außerdem dient der eigene Datenträger dem Datenschutz: Nur der betreffende Schüler kann seine Daten manipulieren.
Es kann nicht schaden, die Programmdateien, an denen gerade gearbeitet wird, etwa alle zehn Minuten zu speichern. Denn Computer pflegen gern gerade dann »abzustürzen«, wenn man seine Arbeit längere Zeit nicht gespeichert hat.
Du möchtest natürlich gleich hier an Ort und Stelle dein erstes Spiel erstellen. Daraus wird nichts. Noch nicht. Als Erstes brauchst du Geduld. Und Ausdauer. Hier starten wir aber schon die Maschine, mit der wir später einiges zaubern werden, das sich sehen und spielen lässt. Wir fangen mit einem Projekt an. Und wir spielen auch schon mal ein bisschen mit einem Objekt herum.
In diesem Kapitel lernst du
wie man Unity startet
deine »Werkbank« kennen
wie man Spiel-Objekte in einem Projekt einsetzt
ein bisschen über Spiele-Physik
etwas über 2D und 3D
wie man die Position und Größe von Objekten ändert
wie man Unity beendet
Bevor wir mit dem Basteln anfangen können, muss das Game-Entwicklungssystem Unity installiert werden. Wie das geht, erfährst du in Anhang A. Wenn du dir das Einrichten nicht allein zutraust, solltest du dir von jemandem helfen lassen.
Eine Möglichkeit, Unity zu starten, ist diese:
Öffne den Ordner, in den du Unity untergebracht hast (bei mir ist das der Unterordner UNITY hub im Ordner Programme auf Laufwerk C:).
Hier suchst du unter den vielen Symbolen eines von denen heraus, die wie eine Art schwarzer Würfel aussehen, und zwar das mit dem Namen Unity hub.exe.
Starte das Programm mit einem Doppelklick auf das Symbol.
Ich empfehle dir, eine Verknüpfung auf dem Desktop anzulegen:
Dazu klickst du mit der rechten Maustaste auf das entsprechende Unity-Symbol (Unity Hub.exe). Im Kontextmenü wählst du Kopieren.
Dann klicke auf eine freie Stelle auf dem Desktop, ebenfalls mit der rechten Maustaste. Im Kontextmenü wählst du Verknüpfung einfügen.
Es ist sinnvoll, für das neue Symbol auf dem Desktop den Text unityhub.exe-Verknüpfung einfach durch Unity zu ersetzen.
Von nun an kannst du auf das neue Symbol doppelklicken und damit Unity starten.
Je nach Computer kann es eine Weile dauern, bis Unity geladen ist. Einige Zeit später landest du in einem neuen Fenster.
Startest du Unity zum allerersten Mal seit der Installation, dann musst du es wahrscheinlich noch aktivieren. Wenn du das nicht allein hinkriegst, schau mal in Anhang A nach.
Dort hast du nun die Möglichkeit, ein Projekt zu öffnen (wenn vorhanden). Oder eines neu zu erstellen.
Klicke auf New.
Im neuen Dialogfeld wählst du die Einstellung 2D. Mit 3D beschäftigen wir uns später.
Gib im Feld für Project Name den Namen des neuen Projekts ein. Und dann bei Location den Ordner, wo du dein Projekt unterbringen willst. (Wenn du alles so stehen lässt, schafft sich Unity seinen eigenen Ordner für deine Spiel-Projekte.)
Ich benutze einen Ordner Unity und nenne mein erstes Projekt schlicht und einfach Projekt1.
Klicke dann auf Create.
Und endlich zeigt uns Unity sein wahres Gesicht (was eine ganze Weile dauern kann). Schauen wir uns erst einmal die Aufteilung der vier wichtigsten Fensterbereiche an:
Im Scene-Fenster sieht man erst einmal nur die Kamera. Für ein Spiel brauchen wir dann noch mindestens ein weiteres Objekt wie eine Kugel oder eine Figur.
Dahinter liegt das Game-Fenster: Hier siehst du dein Spiel in Echtzeit ablaufen, wenn du es durch einen der darüberliegenden Buttons gestartet hast.
Im Hierarchy-Fenster ist bis jetzt nur die Main Camera aufgelistet. Dort stehen dann später alle Objekte, die zur Szene eines Spiels gehören (jedes Spiel könnte also mehrere Szenen haben).
Das Project-Fenster erfasst die Ordner mit dem gesamten Zubehör für das ganze Spiel. Dazu gehören natürlich u.a. auch Programmteile. Bilder, die du als Spielobjekt einsetzen willst (wie z.B. eine Kugel oder eine Figur) lassen sich einfach mit der Maus aus einem Ordnerfenster unter Windows hier hineinziehen. Womit die entsprechende Datei ins Projekt kopiert wird.
Dahinter findest du das Console-Fenster, das sich bei Fehlern meldet. Außerdem lassen sich dort Werte, z.B. von Spiel-Objekten, anzeigen.
Um sich die Eigenschaften eines Objekts nicht nur anzuschauen, sondern auch bearbeiten zu können, gibt es das Inspector-Fenster.
Klicke mal im Hierarchy-Fenster auf Main Camera. Dann verändert sich nicht nur die Darstellung im Scene-Fenster, sondern der Inspector zeigt plötzlich eine ganze Menge an (ändern solltest du allerdings daran nichts).
Um das Hauptmenü und die darunterliegenden Symbole geht es erst mal nicht, damit bekommen wir später noch genug zu tun.
Wir beginnen mit etwas Einfachem. Wir brauchen eine Kugel und die soll sich über das Spielfeld bewegen lassen. Mit der Maus oder mit den Tasten zum Beispiel.
Kommen wir zum Hauptmenü. Klicke dort auf GameObject und dann auf den Eintrag 3D Object. Im Zusatzmenü bekommst du nun eine Auswahl. Klicke auf den Eintrag Sphere (= Kugel).
Alternativ zum Hauptmenü lässt sich ein solches Objekt auch direkt im Hierarchy-Fenster erstellen. Dazu öffnest du mit der rechten Maustaste ein Kontextmenü, und über 3D Object ein weiteres. Dort klickst du auf das gewünschte Objekt, wie z.B. Sphere.
Anschließend taucht im Scene-Fenster etwas auf, das wie ein Kreis aussieht. Außerdem zeigt der Inspector zahlreiche Informationen über unser neues Spiel-Objekt.
Dargestellt sind 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.
Klicke auf File und Save.
Bei Unity heißt diese Szene zuerst SampleScene. Passt dir der Name nicht, dann klicke auf Speichern unter und gib im Dialogfeld einen Namen ein, z.B. Kugel1 (wenn dir nichts Besseres einfällt). Die Kennung unity wird automatisch angefügt. Dann klicke auf Speichern.
Wenn du anschließend im Project-Fenster auf Assets klickst, siehst du da den Ordner Scenes, darin befindet sich das Symbol für die Szenen-Dateien.
Und nun schauen wir uns diese Szene einmal genauer an, und zwar in einem anderen Fenster.
Dazu klickst du auf den Reiter mit dem Text Game (direkt rechts neben dem Scene-Reiter).
Du landest im Game-Fenster. Das hat sich bis jetzt hinter dem Scene-Fenster versteckt.
Hier kannst du sehen, wie dein Spiel in Aktion aussieht. Bis jetzt ist da noch alles dunkel und es bewegt sich nichts. An der Dunkelheit können wir sofort etwas ändern.
Klicke im Hauptmenü auf GameObject und dann auf Light. Im Zusatzmenü klickst du auf den Eintrag Directional Light.
Kurz darauf siehst du deine Kugel in einem anderen Licht. Nur im Game-Fenster?
Klick dich doch mal zurück zum Scene-Fenster.
Dort gibt es auch eine Änderung, wie du sehen kannst. Das neue Spiel-Objekt wird als Symbol aus Strahlen dargestellt.
Da haben wir nun eine Kugel, die sich sonnt. Aber sie soll sich bewegen. 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.
Markiere also im Hierarchy-Fenster (links) den Eintrag Sphere. Dann suche im Inspector-Fenster (rechts) nach einem Button mit der Aufschrift Add Component und klicke darauf.
Ein kleines Kontextmenü öffnet sich. Wähle dort den Eintrag Physics.
Im nächsten Menü klickst du auf Rigidbody.
Alternativ dazu kannst du auch den Weg über das Hauptmenü suchen: Dazu klickst du dich über Component und Physics zu Rigidbody durch.
Damit bekommt die Kugel (Sphere) einige physikalische Eigenschaften wie Masse (unsere Kugel wiegt also auf einmal etwas), Gravitation (sie wird vom Boden angezogen, würde also aus der Luft auf den Boden fallen). Auch Kollisionen mit anderen Objekten und ihre Folgen sind möglich. Genauer gehe ich auf Einzelheiten ein, wenn es konkret nötig ist. Jetzt lass alles so, wie es ist.
Wie du bemerkt hast, gibt es in Unity diese Spiel-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).
Ausprobieren kannst du das Ganze schon einmal. Wechsle dazu ins Game-Fenster.
Dann klickst du im Hauptmenü auf Edit und Play. Oder du benutzt 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 eines Spiels lässt sich auch über Buttons steuern. Ganz oben, unter der Menüzeile, findest du drei davon. Der linke (mit dem Dreieck) ist der Play-Button. Per Mausklick kannst du damit ein Spiel starten und stoppen.
Irgendwie blöd, 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 sie einem beim Spielen nützlich sein. Denk nur mal 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.
Klicke im Hauptmenü auf GameObject und dann auf 3D Object. Im Zusatzmenü suchst du diesmal den Eintrag Cube (= Würfel) und klickst 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.
Wenn du willst, kannst du die Szene erst einmal wieder speichern (mit Klick auf File und Save).
Solltest du auf die Idee kommen, mal zu sehen, wie das Spiel sich aktuell »macht«, nur zu: Klicke auf den Play-Button oder benutze Strg+P. Die zuerst noch nicht sichtbare Kugel fällt hinter dem Quader herunter. Sie ist also weiterhin da, das neue Objekt beeinflusst ihren Fall (noch) nicht.
Aktuell ist der Quader noch ein Würfel, später könnte man daraus eine Platte machen. Doch erst sehen wir zu, wie wir den Quader nach unten verschieben. Grundsätzlich gibt es da zwei Möglichkeiten:
Du packst das Objekt im Scene-Fenster mit der Maus und ziehst es nach unten (das Ganze geht natürlich auch in andere Richtungen).
Du änderst die Werte für Position im Inspector-Fenster. Genauer: den y-Wert auf -1.
Verschiebe den Quader so, dass er direkt unter der Kugel liegt.
Und nun schau dir im Game-Fenster an, was passiert, wenn du das Spiel startest. (Damit du mehr sehen kannst, habe ich Scale auf 2x eingestellt.)
Du kannst 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.
Verschiebe nun den Quader bis zum Spielfeldrand nach unten. Achte darauf, dass er möglichst genau unter der Kugel liegt.
Bei mir steht im Inspector-Fenster hinter Position der y-Wert -4.
Vielleicht hast du ab und zu mal 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 zu sehen ist.
Wenn du willst, kannst du die Kamera mal anklicken und damit markieren. Dann lässt sie sich verschieben, ebenso wie Kugel oder Quader. Damit ändert sich auch die Perspektive im Game-Fenster. Über Edit/Undo oder Strg+Z lässt sich die Verschiebung wieder rückgängig machen.
Starte das Spiel erneut und schau zu, wie die Kugel fällt und auf dem Quader landet – eigentlich wie zu erwarten, oder?
Dass das keine Selbstverständlichkeit ist, wirst du gleich sehen. Verantwortlich dafür, dass die Kugel auf dem Quader landet und nicht weiterfällt, ist eine 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.
Entferne mal das Häkchen vor einem dieser beiden Einträge.
Dann starte das Spiel erneut, z.B. mit dem Play-Button (oder über Edit und Play).
Und du wirst sehen, dass die Kugel nun einfach durch den Quader hindurchfällt, ein Objekt ist für das andere sozusagen »Luft«.
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.
Sorge dafür, dass die Collider von Kugel und Quader wieder aktiv sind.
Du hast aus Versehen eine falsche Komponente hinzugefügt und willst sie wieder loswerden? Hinter jedem Komponenten-Namen im Inspector-Fenster siehst du ganz rechts drei kleine Pünktchen.
Wenn du darauf klickst, öffnest du ein Kontext-Menü, in dem u.a. der Eintrag Remove Component zu finden ist. Außer bei der Transform-Komponente, die lässt sich nicht entfernen.
Unser erstes kleines Projekt ist damit fertig. Nichts Besonderes, aber auch nicht übel für den Anfang. Aber wir sollten den Spiel-Objekten doch noch einen anderen Namen geben. Dazu muss das jeweilige Objekt im Hierarchy-Fenster markiert sein.
Klicke mit der rechten Maustaste auf den Objekt-Namen. Zum Beispiel Sphere. Dann wähle den Eintrag Rename.
Nun kannst du durch direktes Neueintippen den alten Namen überschreiben.
Bei mir heißt die Kugel nun »Kugel« und der Quader bekommt den Namen »Boden«.
Jetzt wird es Zeit, Unity erst mal wieder zu verlassen.
Klicke auf File und dann auf Exit (oder du klickst im Hauptfenster ganz oben rechts auf das kleine X).
Solltest du an deiner Szene noch etwas verändert haben, wird in einem Meldefenster noch einmal nachgefragt:
Klicke auf Save. Dann wird Unity beendet.
Damit wäre erst einmal eine Verschnaufpause fällig. Nun hast du Unity schon etwas näher kennengelernt, sodass du sicher gern in den nächsten Kapiteln weiter damit arbeiten beziehungsweise spielen möchtest.
Auf jeden Fall weißt du schon einmal, wie man ein Projekt erstellt und dass dies aus mindestens einer Szene und einem Spiel-Objekt besteht. Und du kennst ein paar Operationen im Umgang mit Unity:
Unity starten
Doppelklicke auf das Symbol für Unity. Oder klicke auf Start/Ausführen und tippe den kompletten Pfad für unity-hub ein.
Neues Objekt erzeugen
Klicke auf GameObject/3D Object und das Objekt deiner Wahl.
Physik-Komponente hinzufügen
Klicke auf Component/Physics/Rigidbody.
Objekt umbenennen
Klicke mit der rechten Maustaste auf das Objekt und dann klicke auf Rename.
Spiel starten
Klicke auf Edit/Play.
Szene speichern
Klicke auf File/Save.
Hilfesystem aufrufen
Klicke auf Help.
Unity beenden
Klicke auf File/Exit.
Auch über die Elemente eines Spiel-Projekts weißt du schon ein bisschen Bescheid.
GameObject
Spiel-Objekt, wie z.B. Quader oder Kugel, aber auch Kamera oder Licht
Collider
Komponente für Kollisionen
RigidBody
Komponente für physikalische Eigenschaften, wie z.B. Masse oder Gravitation
Für jedes Objekt gibt es eine Transformations-Komponente mit diesen Optionen:
Transform
Komponente für Änderungen der Lage und Größe
Position
Verschieben in alle Richtungen (3D)
Rotation
Drehen in alle Richtungen (3D)
Scale
Vergrößern/Verkleinern in alle Richtungen (3D)
Was passiert, wenn der Quader auch eine Rigidbody-Eigenschaft hätte?
Was passiert, wenn die Kugel (mit Rigidbody-Eigenschaft) auf eine Schräge fällt?
Ändere dein Projekt so um: Drehe den »Boden« (beziehungsweise Quader) um die z-Achse. Wähle 15 bis 30 Grad (plus oder minus). Verschiebe die Kugel in die obere linke oder rechte Ecke. Ergänze das Ganze um einen weiteren Quader, der rechts oder links eine Mauer bildet. Beachte die Kameraperspektive. Dann starte das Spiel und schau zu.
Nun haben wir eine Kugel. Sie kann ganz ohne unser Zutun fallen oder rollen – wenn es bergab geht. Das bewirken ihre physikalischen Eigenschaften. Aber steuern lässt sie sich nicht. Wir brauchen einen Weg, um die Kugel zu kontrollieren. Und den suchen und finden wir hier.
In diesem Kapitel lernst du
was Assets sind
wie man ein Script erstellt und bearbeitet
etwas über Klassen und Methoden
die if-Kontrollstruktur kennen
wie man ein Objekt über Tasten steuern kann
etwas über Vektoren
die Methoden AddForce() und MovePosition() kennen
etwas über Import und Export von Assets
In Unity gibt man einer Spielfigur eine Art Drehbuch, Script genannt. Darin steht, was sie zu tun hat. Unsere Spielfigur ist hier die Kugel.
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.
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.
Klicke im Hauptmenü auf Assets, wähle den Eintrag Create und im Zusatzmenü Folder (Deutsch: Ordner).
Ganz unten im Project-Fenster taucht nun ein Ordner-Symbol auf. Dort kannst du den Namen ändern.
Gib dem Ordner den Namen Scripts.
Als Nächstes erzeugen wir die Script-Datei.
Dazu markierst du im Hierarchy-Fenster den Eintrag Kugel (unsere Spielfigur). Dann klickst du unten rechts im Inspector-Fenster auf Add Component.
Das Kontextmenü, das sich öffnet, kennst du schon.
Wähle dort den Eintrag New Script.
Im folgenden Fensterchen gibst du dem Script einen Namen, z.B. SphereControl oder KugelKontrolle oder was dir Passendes einfällt.
Klicke abschließend auf Create and Add.
Und schon hat das Project-Fenster ein neues Symbol.
Auch ein Script ist eine Komponente, wie du unschwer erkennen kannst, wenn du das Spiel-Objekt Kugel markierst und ins Inspector-Fenster schaust. 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 auf Deutsch hineinschreiben: »Liebe Kugel, springe doch bitte auf Tastendruck oder Mausklick wieder zurück nach oben«, sondern die Anweisungen müssen ganz präzise in einer bestimmten Programmiersprache verfasst sein. Das ist hier C# (gesprochen C-sharp). Und deren Wortschatz besteht aus englischen Wörtern.
Weil du dafür einen Extra-Ordner angelegt hast, solltest du das Script-Symbol mit der Maus dort hineinschieben.
Nun müssen wir uns um das kümmern, was ins Drehbuch hinein soll. Wenn du das Script-Symbol anklickst, siehst du im Inspector-Fenster, dass da offenbar schon etwas steht.
Um diesen Text zu bearbeiten, brauchen wir einen Editor. Unity nutzt dazu Visual Studio von Microsoft. Eine Version davon wurde bei der Einrichtung von Unity mitinstalliert.
Normalerweise. Sollte das nicht der Fall sein – was du ja demnächst merken wirst – findest du genauere Informationen zur Installation in Anhang A.
Klicke nun mit der rechten Maustaste auf das Script-Symbol und wähle im Kontextmenü den Eintrag Open. Das Ganze funktioniert auch mit einem Doppelklick auf das Symbol.
Beim ersten Start von Visual Studio
