einstieg in unity – ideal für programmieranfänger · pdf fileprobe führt...
Post on 06-Feb-2018
246 Views
Preview:
TRANSCRIPT
LeseprobeDer Weg zum eigenen Computerspiel beginnt hier! Diese Lese- probe führt Sie durch den Unity-Editor und hilft Ihnen bei den ersten Schritten hin zu einem einfachen 2D-Spiel. Sie erfahren, wie Sie die Kamera und die Spielobjekte steuern, Assets impor-tieren und sogar ein 3D-Spiel programmieren.
Thomas Theis
Einstieg in Unity – Ideal für Programmieranfänger448 Seiten, broschiert, in Farbe, Februar 2017 29,90 Euro, ISBN 978-3-8362-4292-9
www.rheinwerk-verlag.de/4211
»Das erste 2D-Projekt« »Spielen Sie ein 2D-Jump&Run!« »Ein neues Projekt: Der 3D-Balancer«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Wissen, wie’s geht.
24
1 Das erste 2D-Projekt
Kapitel 1
Das erste 2D-Projekt
In diesem Abschnitt lernen wir den Unity Editor als unsere Benutzer-
oberfläche zur Erstellung von Projekten kennen. Wir legen dazu ein erstes
2D-Projekt mit dem Namen ZweiDimensionen an, das einige einfache Ele-
mente beinhaltet.
1.1 Erstellung eines neuen Projekts
New Starten Sie Unity. Es erscheint das Dialogfeld zur Auswahl beziehungsweise
Erstellung eines Projekts. Betätigen Sie den Link New zur Erstellung eines
neuen Projekts. Im oberen Eingabefeld geben wir den Namen des Projekts
ein. Hier ist das »ZweiDimensionen«, siehe Abbildung 1.1.
Das Verzeichnis UnityProjekte für die Projektverzeichnisse haben wir be-
reits in der Einführung im Abschnitt »Projektverzeichnis und Vorlagen«
unterhalb des Windows-Verzeichnisses Dokumente angelegt. Die englische
Windows-Bezeichnung für dieses Verzeichnis lautet C:\Users\[Benutzer-
name]\Documents\UnityProjekte. Es sollte zur Erstellung ausgewählt sein,
siehe Abbildung 1.1.
Create project Es wird die Option 2D markiert, damit passende Voreinstellungen für 2D-
Projekte getroffen werden. Nach Betätigung der Schaltfläche Create Pro-
ject wird das Projekt erzeugt und im Unity Editor angezeigt.
Abbildung 1.1 Erstellung des ersten 2D-Projekts
1.2 Wichtige Bereiche im Unity Editor
25
1.2 Wichtige Bereiche im Unity Editor
Entwicklungs-
umgebung
Der Unity Editor stellt die Umgebung dar, in der wir unsere Unity-Projek-
te entwickeln. Wir arbeiten mit der englischsprachigen Version von Unity.
Ich verwende daher die englischen Begriffe für die Elemente des Pro-
gramms, wie sie auch vor Ihnen auf dem Bildschirm erscheinen.
Neben der Menüleiste am oberen Rand gibt es noch andere wichtige Berei-
che im Unity Editor, die sogenannten Views, siehe Abbildung 1.2. Für je-
den Bereich gibt es einen Reiter, auf dem die Bezeichnung der View steht:
Project View� Am unteren Rand finden Sie die Project View. Sie beinhaltet die soge-
nannten Assets. Assets sind Elemente, die uns für ein Unity-Projekt
grundsätzlich zur Verfügung stehen. Wir können einzelne oder auch alle
Assets als Spielobjekte oder Teile von Spielobjekten verwenden. Ein As-
set kann mehrfach in einem Spiel eingesetzt werden oder eventuell zu-
nächst auch gar nicht.
Console View� Ebenfalls am unteren Rand gibt es die Console View. Sie steht zunächst
hinter der Project View und kann durch einen Klick auf ihren Reiter
nach vorne gebracht werden. Hier sehen Sie Kontrollausgaben oder
auch Fehlermeldungen Ihrer Programme.
Hierarchy View � Am linken Rand gibt es die Hierarchy View. Sie dient als ein hierarchi-
sches Verzeichnis derjenigen Spielobjekte, die tatsächlich im Projekt
agieren. Spielobjekte können aus den Assets stammen, aber auch auf
andere Weise erzeugt werden.
Scene View� In der Mitte finden Sie die Scene View. Hier positionieren Sie während
der Entwicklung diejenigen Spielobjekte, die tatsächlich im Projekt agie-
ren, auf dem Spielfeld.
Game View� Ebenfalls in der Mitte gibt es die Game View. Sie steht zunächst hinter
der Scene View und kann durch einen Klick auf ihren Reiter nach vorne
gebracht werden. Hier sehen Sie eine Vorschau auf das Spielfeld, wie es
während des Spiels aussieht.
Inspector View� Am rechten Rand sehen Sie die Inspector View. Sie beinhaltet die Kom-
ponenten desjenigen Spielobjekts, das Sie aktuell in der Hierarchy
View oder in der Scene View ausgewählt haben. In den Komponenten
finden Sie die einzelnen Eigenschaften der Spielobjekte und deren aktu-
elle Werte. Sie können diese Werte betrachten und verändern.
1 Das erste 2D-Projekt
26
Abbildung 1.2 Der Unity Editor
Reiter Alle Bereiche können in ihrer Größe verändert werden, indem sie am Rand
mithilfe der Maus angefasst werden. An ihrem Reiter können Sie ebenfalls
mithilfe der Maus angefasst und an andere Stellen des Bildschirms ver-
schoben werden. Sie können Bereiche ganz ausblenden oder weitere Berei-
che einblenden.
Layouts Die Veränderungen über den Reiter sollten zunächst mit Vorsicht durchge-
führt werden. Ganz oben rechts gibt es eine Liste von möglichen Layouts.
Jedes Layout bietet typische Werte für die Anordnung und die Größe der
Bereiche, siehe Abbildung 1.3. Über den Eintrag Default können Sie die
Grundeinstellung wieder aufrufen.
Abbildung 1.3 Liste der Layouts
1.4 Assets importieren
27
1.3 Das Spielobjekt »Main Camera«
Sicht des BenutzersJedes 2D-Projekt umfasst standardmäßig bereits ein Spielobjekt, das in der
Hierarchy View erscheint. Es hat den Namen Main Camera und stellt die
Kamera dar, mit deren Hilfe der Benutzer auf das Spielfeld sieht. Es er-
scheint in der Mitte der Scene View in Form eines Kamerasymbols.
EigenschaftenFalls Sie wie in Abbildung 1.2 das Spielobjekt Main Camera in der Hierarchy
View markiert haben, sehen Sie rechts unten in der Scene View das kleine
Fenster Camera Preview, das eine Vorausschau auf das spätere Spielfeld
ermöglicht. Gleichzeitig sehen Sie in der Inspector View die Eigenschaf-
ten und Werte für das Spielobjekt Main Camera. Auf einige dieser Werte gehe
ich später noch ein.
1.4 Assets importieren
Auf Basis eines neuen Assets sollen zwei Spielobjekte eingefügt werden.
Gemeinsam mit den Beispielprojekten haben Sie in der Einführung im Ab-
schnitt »Projektverzeichnis und Vorlagen« das Verzeichnis FreieAssets he-
runtergeladen. Darin befindet sich einige einfache Bilddateien, die als As-
sets importiert werden können. Eine davon benötigen wir.
Freies AssetRufen Sie den Menüpunkt Assets • Import New Asset auf. Wählen Sie die
Bilddatei Rakete.png aus dem Verzeichnis FreieAssets aus, und betätigen
Sie die Schaltfläche Import. Nach dem Import erscheint Ihr erstes Asset
mit dem Namen Rakete in der Project View im Bereich Assets. Es handelt
sich um ein Asset vom Typ Sprite. Sprites sind einfache zweidimensionale
Grafikobjekte. Falls Sie es in der Project View markieren, wird unten der
Dateiname angezeigt, siehe Abbildung 1.4.
Abbildung 1.4 Asset aus Bilddatei
1 Das erste 2D-Projekt
28
1.5 Spielobjekte einfügen
Ziehen Sie das Asset zweimal nacheinander mithilfe der Maus in die Hier-
archy View. Achten Sie dabei darauf, das Asset nicht genau auf einem
bereits vorhandenen Spielobjekt in der Hierarchy View loszulassen, son-
dern in dem freien Bereich unterhalb der bisher vorhandenen Spielobjekte.
Erste Spielobjekte Damit haben Sie zusätzlich zum Spielobjekt Main Camera zwei weitere Spiel-
objekte in das Projekt eingefügt. Diese tragen zunächst die Namen Rakete
und Rakete (1) und entstammen demselben Asset.
Umbenennen Markieren Sie das erste neue Spielobjekt Rakete in der Hierarchy View.
Nun können Sie seine Eigenschaften betrachten oder ändern. Wenn Sie es
noch einmal anklicken, so können Sie seinen Namen ändern, zum Beispiel
auf RaketeEins.
Sprites/Default In der Inspector View sehen Sie in der Komponente Sprite Renderer die
Eigenschaft Material. Ihr Wert sollte, siehe Abbildung 1.5, auf Sprites/De-
fault stehen, damit die Bilddatei unverfälscht dargestellt wird. Falls das
einmal nicht der Fall sein sollte, klicken Sie auf den Kreis rechts neben der
Eigenschaft Material. Es öffnet sich das Dialogfeld Select Material.
Wählen Sie darin den Eintrag Sprites/Default aus.
Führen Sie die beiden Aktionen auch für das zweite neue Spielobjekt Rakete
(1) aus. Es soll RaketeZwei heißen, siehe Abbildung 1.6. Beide Raketen liegen
in der Scene View noch genau hintereinander. Das wird in Kürze geändert.
Abbildung 1.5 Komponente »Sprite
Renderer«, Eigenschaft »Material«
Abbildung 1.6 Zwei neue Spielobjekte
1.6 Ändern der Hierarchie
29
1.6 Ändern der Hierarchie
In diesem Abschnitt zeige ich Ihnen einige typische Änderungen in der Hi-
erarchy View, die erfahrungsgemäß auch schnell zu Fehlern führen kön-
nen. Führen Sie die Änderungen auch selber einmal durch. Solange mögli-
che Fehler in diesem kleinen Übungsprojekt auftreten, sind die
Auswirkungen noch überschaubar.
Reihenfolge
der Spielobjekte
Aus Gründen der Übersichtlichkeit ist die Reihenfolge der Spielobjekte in
der Hierarchy View wichtig. Nehmen wir an, Sie möchten das Spielobjekt
RaketeZwei vor dem Spielobjekt RaketeEins anordnen. Dazu betätigen Sie
auf dem Spielobjekt RaketeZwei die linke Maustaste, halten sie gedrückt
und ziehen das Spielobjekt nach oben, bis der Mauszeiger als eine dünne
blaue Linie zwischen den Spielobjekten Main Camera und RaketeEins er-
scheint. In diesem Moment können Sie die Maustaste loslassen.
RückgängigDie Spielobjekte haben nun die gewünschte Reihenfolge. Mit dem Menü-
befehl Edit / Undo … beziehungsweise der Tastenkombination (Strg)+(Z)
machen Sie diese Änderung wieder rückgängig.
UnterordnungFalls Sie das Spielobjekt RaketeZwei bei der oben genannten Änderung
genau auf dem Spielobjekt RaketeEins loslassen (siehe Abbildung 1.7), wird
es dem Spielobjekt RaketeEins hierarchisch untergeordnet (siehe Abbil-
dung 1.8).
Abbildung 1.7 Falscher Zeitpunkt
zum Loslassen
Abbildung 1.8 Falsche Hierarchie
von Spielobjekten
Diese Unterordnung kann aus zwei Gründen erwünscht sein:
Gemeinsam
bewegen
� Sie haben ein Spielobjekt, das aus mehreren untergeordneten Spielob-
jekten zusammengesetzt wird. Das kann zum Beispiel das Spielobjekt
Mensch sein, das aus den Körperteilen (sprich: Spielobjekten) Kopf, Rumpf,
Linker Arm, Rechter Arm, Linkes Bein und Rechtes Bein besteht. Falls der
Mensch als Ganzes bewegt wird, bewegen sich alle seine Körperteile
mit ihm. Es gibt also das übergeordnete Spielobjekt Mensch und sechs
untergeordnete Spielobjekte für die einzelnen Körperteile, siehe Abbil-
dung 1.9.
1 Das erste 2D-Projekt
30
Verzeichnis � Sie haben sehr viele Spielobjekte, die Sie thematisch zusammenfassen
möchten, damit Sie in der Hierarchy View nicht den Überblick verlie-
ren. Dabei dient das übergeordnete Spielobjekt als Verzeichnis, ver-
gleichbar einem Verzeichnis im Dateisystem Ihres Rechners. Das kann
zum Beispiel das Verzeichnis Raum sein, in dem sich die Spielobjekte
Boden, Decke, Linke Wand und Rechte Wand befinden, siehe ebenfalls Abbil-
dung 1.9.
Abbildung 1.9 Spielobjekte als übergeordnete Verzeichnisse
Parent und Child Ein übergeordnetes Spielobjekt wird Parent (dt.: Elternteil) genannt, ein un-
tergeordnetes Spielobjekt Child (dt.: Kind). Die Mehrzahl von Child ist Chil-
dren (dt.: Kinder). Der Vorgang des Unterordnens innerhalb einer Unity-
Hierarchie wird Parenting genannt. Alle diese Begriffe werden uns in den
Unity-Projekten begegnen.
In diesem Projekt ist die Unterordnung allerdings nicht erwünscht. Ma-
chen Sie diese Änderung daher mithilfe der Tastenkombination (Strg)+(Z)
rückgängig, sodass sich wieder die ursprüngliche Reihenfolge wie in Abbil-
dung 1.6 ergibt.
1.7 Eine Szene speichern
Save Scene Sie sollten eine Spielszene nach dem Einfügen von Spielobjekten oder nach
anderen Änderungen regelmäßig speichern. Rufen Sie dazu den Menü-
punkt File • Save Scene auf. Es wird das Unterverzeichnis Assets Ihres
Projekts zur Speicherung angeboten. Speichern Sie die Szene dort, zum Bei-
spiel unter dem Namen Szene1. Szene-Dateien haben die Endung unity, wie
Sie in der Project View in Abbildung 1.10 sehen.
1.8 Die Komponente »Transform«
31
Abbildung 1.10 Asset vom Typ »Szene«
Später genügt die Tastenkombination (Strg)+(S) zum erneuten Speichern.
Ein Projekt kann aus mehreren Szenen bestehen, die nacheinander durch-
laufen werden. Unser Projekt hat nur eine Szene.
1.8 Die Komponente »Transform«
Position, Drehung
und Größe
Jedes Spielobjekt besitzt die Komponente Transform. Die Transform-
Komponente ist die wichtigste Komponente. Sie dient zur Festlegung der
Position, der Drehung und der Größe eines Spielobjekts. Markieren Sie ein-
mal das Spielobjekt RaketeEins in der Hierarchy View oder in der Scene
View. In der Inspector View sehen Sie nun seine Komponenten, wie zum
Beispiel die Transform-Komponente in Abbildung 1.11.
Abbildung 1.11 Spielobjekt »RaketeEins«, Transform-Komponente
1.8.1 Die Eigenschaften der Transform-Komponente
In der Transform-Komponente können Sie die nachfolgenden Eigenschaf-
ten eines Spielobjekts sehen und verändern.
Die Eigenschaft Position:
X- und Y-Achse Sie gibt die Position des Spielobjekts auf dem Spielfeld entlang der drei Ko-
ordinatenachsen an. Die X-Achse verläuft von links nach rechts. Ein Spiel-
objekt hat am linken Rand des Spielfelds also zum Beispiel den X-Wert –5,
1 Das erste 2D-Projekt
32
in der Mitte den X-Wert 0 und am rechten Rand den X-Wert 5. Die Y-Achse
verläuft von unten nach oben. Ein Spielobjekt hat am unteren Rand des
Spielfelds also zum Beispiel den Y-Wert –5, in der Mitte den Y-Wert 0 und
am oberen Rand den Y-Wert 5.
Z-Achse Bei 2D-Spielen wird die Z-Koordinate für die dritte Dimension nur selten
benötigt. Die Z-Achse verläuft von vorne (vom Benutzer aus vor dem Bild-
schirm) nach hinten (vom Benutzer aus hinter dem Bildschirm). Ein Spiel-
objekt hat vor dem Bildschirm also zum Beispiel den Z-Wert –5, auf der Ebe-
ne des Bildschirms den Z-Wert 0 und hinter dem Bildschirm den Z-Wert 5.
Linke-Hand-Regel Zur Verdeutlichung der drei Achsen dient die Linke-Hand-Regel:
� Der Daumen der linken Hand soll nach rechts weisen. Damit zeigt er in
Richtung der positiven X-Achse.
� Der Zeigefinger der linken Hand soll nach oben weisen. Damit zeigt er in
Richtung der positiven Y-Achse.
� Der Mittelfinger der linken Hand soll abgewinkelt werden und nach hin-
ten weisen, sozusagen durch den Bildschirm hindurch. Damit zeigt er in
Richtung der positiven Z-Achse.
Das Spielobjekt Main Camera stellt bezüglich der Z-Koordinate eine Ausnah-
me dar. Mit einem Wert von –10 steht es vor dem Bildschirm. Daher schau-
en wir von vorne auf das Spielfeld.
Die Eigenschaft Rotation:
Drehung in Grad Sie gibt die Drehung des Spielobjekts um die X-Achse, um die Y-Achse und
um die Z-Achse als Winkel in Grad an. In 2D-Projekten ist normalerweise
nur eine Drehung um die Z-Achse, also eine Drehung in der Ebene des Bild-
schirms, sinnvoll. Ein positiver Wert bedeutet eine Drehung um die Z-Ach-
se gegen den Uhrzeigersinn.
Die Eigenschaft Scale:
Faktor für Größe Sie gibt die relative Größe des Spielobjekts in der X-Richtung, in der Y-Rich-
tung und in der Z-Richtung mithilfe eines Skalierungsfaktors an. Zunächst
haben alle drei Faktoren den Wert 1.
1.8.2 Werte in der Inspector View ändern
Nach dem Einfügen eines neuen Spielobjekts besitzt es zunächst die fol-
genden Transform-Werte, siehe auch Abbildung 1.11:
1.8 Die Komponente »Transform«
33
� Es liegt in der Mitte des Spielfelds, bei X = 0, Y = 0 und Z = 0, oder – ver-
kürzt ausgedrückt – an der Position 0/0/0.
� Es ist nicht gedreht, die Rotation liegt also ebenfalls bei 0/0/0.
� Es hat seine Originalgröße, der Scale steht also bei 1/1/1.
In Abbildung 1.12 sehen Sie das Spielfeld, nachdem die Transform-Werte für
die Spielobjekte RaketeEins und RaketeZwei in der Inspector View geän-
dert wurden. Die Einstellung der Kamera wurde nicht geändert.
Abbildung 1.12 Transform-Werte geändert
Ort und Größe
geändert
Links in Abbildung 1.12 sehen Sie das Spielobjekt RaketeEins an der Position
–5/0/0. Es ist nicht gedreht, die Rotation beträgt also 0/0/0. Es ist in X-
Richtung leicht und in Y-Richtung etwas stärker vergrößert. Die Größe in Z-
Richtung ist nicht relevant und kann auf 0 gesetzt werden. Der Scale be-
trägt nun 1.2/1.8/0.
DezimalpunktDie Stellen nach dem Komma werden, wie im englischen Sprachraum üb-
lich, mit einem Dezimalpunkt statt einem Dezimalkomma abgetrennt. So
sehen Sie es auch auf den Abbildungen dieses Buches, und so müssen Sie
auch später die Werte im Programmcode eingeben. Zur Verminderung der
Fehlerquote nutze ich daher auch im erläuternden Text dieses Buches den
im deutschen Sprachraum eigentlich unüblichen Dezimalpunkt. Es gibt
eine kleine Hilfestellung: Falls Sie in der Inspector View einen Wert mit
einem Dezimalkomma eingeben, wird daraus automatisch ein Dezimal-
punkt.
Ort und Drehung
geändert
Oben rechts in Abbildung 1.12 sehen Sie das Spielobjekt RaketeZwei an der
Position 0/2.5/0. Es ist um 30 Grad gegen den Uhrzeigersinn um die Z-Ach-
se gedreht, die Rotation beträgt also 0/0/30. Es ist in Y-Richtung leicht ver-
kleinert und in X-Richtung etwas vergrößert, der Scale beträgt 1.8/0.8/0.
1 Das erste 2D-Projekt
34
Negativer Winkel Falls Sie bei einer der Rotationsachsen einen Winkel zwischen 180 und 360
Grad einstellen, kann es vorkommen, dass Unity diesen Wert automatisch
auf den zugehörigen negativen Wert ändert. Das ist kein Problem und hat
keinen Einfluss auf den Ablauf. Ein Beispiel: Der Wert 330 Grad wird geän-
dert auf –30 Grad, also 330 Grad minus 360 Grad.
Selber ändern Ändern Sie in der Inspector View einzelne Transform-Werte der beiden
Spielobjekte, und schauen Sie sich die Auswirkungen unmittelbar nach der
Änderung an. Damit lernen Sie den Umgang mit den Koordinaten, Achsen,
Drehungen und Größenverhältnissen recht schnell.
Alternativ können Sie die Transform-Werte auch mithilfe der Maus
ändern. Das wird im folgenden Abschnitt 1.9 beschrieben.
1.9 Die Ansicht in der Scene View
Sie haben mehrere Möglichkeiten, die Ansicht der Scene View zu ändern.
Drücken Sie zunächst einmal die Taste (Alt), und halten Sie sie gedrückt.
Der Mauszeiger ändert sich über der Scene View in eine Hand. Nutzen Sie
nun zusätzlich eine der folgenden Maustasten:
Verschieben � Verschieben Sie mithilfe der gedrückten linken Maustaste die Ansicht
der Scene View nach links, rechts, oben oder unten.
Zoomen � Zoomen Sie in die Scene View hinein, und zwar mit der gedrückten
rechten Maustaste und einer Verschiebung der Maus nach rechts oder
unten.
� Zoomen Sie aus der Scene View heraus, und zwar mit der gedrückten
rechten Maustaste und einer Verschiebung der Maus nach links oder
oben.
Fokussieren Zur genauen Betrachtung eines einzelnen Spielobjekts können Sie es fo-
kussieren. Markieren Sie es dazu in der Hierarchy View, setzen Sie die
Maus über die Scene View und drücken Sie anschließend die Taste (F). Das
betreffende Objekt wird herangezoomt. Anschließend können Sie zum Bei-
spiel das Spielobjekt Main Camera fokussieren, um wieder herauszuzoomen.
1.9.1 Positionswerte mithilfe der Maus ändern
Symbolleisten Oben links stehen Ihnen zwei Symbolleisten mit insgesamt sieben Schalt-
flächen zur Verfügung, die unter anderem zur Änderung der Transform-
1.9 Die Ansicht in der Scene View
35
Werte von Spielobjekten mithilfe der Maus dienen, siehe Abbildung 1.13.
Ich habe sie zur besseren Übersicht nummeriert.
Local, GlobalMithilfe der Schaltfläche Nr. 7 können Sie zwischen den Zuständen Local
und Global umschalten:
� Die Einstellung Local bedeutet, dass Sie in der Scene View mit den
lokalen Achsen des Spielobjekts arbeiten.
� Die Einstellung Global bedeutet, dass Sie in der Scene View mit den
globalen Achsen arbeiten, die für das gesamte Spielfeld gelten.
Die Bedeutung wird nachfolgend noch klarer. Stellen Sie den Schalter
zunächst auf Local.
Abbildung 1.13 Zwei Symbolleisten
Positions-HandleBetätigen Sie die Schaltfläche Nr. 2, und markieren Sie eines der Spielobjek-
te, zum Beispiel RaketeZwei. Über dem Spielobjekt erscheint ein Handle zur
Änderung der Position, siehe Abbildung 1.14.
Verschieben
entlang Achse
Fassen Sie mit der Maus an einer der beiden Pfeilspitzen des Handles an,
und verschieben Sie das Spielobjekt entlang seiner lokalen X-Achse (rot)
oder entlang seiner lokalen Y-Achse (grün). Beachten Sie parallel die Ände-
rung der Positionswerte in der Inspector View.
Globale AchsenStellen Sie den oben genannten Schalter nun auf Global. Das Handle zur
Änderung der Position erscheint mit den globalen X- und Y-Achsen, also
den Achsen des gesamten Spielfelds, siehe Abbildung 1.15.
Abbildung 1.14 Position entlang der
lokalen Achsen ändern
Abbildung 1.15 Position entlang der
globalen Achsen ändern
1 Das erste 2D-Projekt
36
Verschieben
auf Ebene
Alternativ können Sie mit der Maus auch das blaue Quadrat anfassen, das
sich rechts oberhalb der Mitte des Spielobjekts befindet. Sie können es da-
mit frei auf der X-Y-Ebene verschieben. Das ist die Ebene, die durch die X-
Achse und die Y-Achse gebildet wird
1.9.2 Rotationswerte mithilfe der Maus ändern
Rotations-Handle Stellen Sie den oben genannten Schalter nun wieder auf Local. Betätigen
Sie die Schaltfläche Nr. 3 in Abbildung 1.13, und markieren Sie eines der
Spielobjekte, zum Beispiel wiederum RaketeZwei. Über dem Spielobjekt er-
scheint ein Handle zur Änderung der Rotation, siehe Abbildung 1.16.
Drehen um Achse Fassen Sie mit der Maus an einem der beiden Kreise an, und drehen Sie da-
mit das Spielobjekt um die Z-Achse. Beachten Sie parallel die Änderung der
Rotationswerte in der Inspector View.
Abbildung 1.16 Rotation ändern
Falls Sie den oben genannten Schalter wieder auf Global stellen, ändern
sich die Kreise für die Änderung um die Z-Achse nicht. Da bei 2D-Projekten
nur Rotationen um die Z-Achse sinnvoll sind, hat hier die Änderung des
Schalters keine Auswirkung.
1.9.3 Scale-Werte mithilfe der Maus ändern
Scale-Handle Betätigen Sie die Schaltfläche Nr. 4 in Abbildung 1.13, und markieren Sie
eines der Spielobjekte. Über dem Spielobjekt erscheint ein Handle zur Än-
derung des Scales, siehe Abbildung 1.17:
Einzeln ändern � Fassen Sie mit der Maus an einem der beiden äußeren Quadrate an, und
vergrößern oder verkleinern Sie das Spielobjekt in der Höhe oder in der
Breite.
1.9 Die Ansicht in der Scene View
37
Proportional
ändern
� Fassen Sie mit der Maus an dem weißen Quadrat in der Mitte an, und
vergrößern oder verkleinern Sie das Spielobjekt unter Beibehaltung des
Verhältnisses von Höhe zu Breite.
Beachten Sie parallel die Änderung der Scale-Werte, das sogenannte Skalie-
ren, in der Inspector View. Sie können den oben genannten Schalter nicht
auf Global oder Local stellen, da das keine Auswirkung für die Änderung
eines Scale-Wertes hätte.
Abbildung 1.17 Scale ändern
38
2 Spielen Sie ein 2D-Jump&Run-Spiel
Kapitel 2
Spielen Sie ein 2D-Jump&Run-Spiel
Zunächst sollen Sie das fertige 2D-Spiel TomsJumpAndRun selber spielen,
damit Sie seine Elemente kennenlernen. Anschließend werden Sie es Stück
für Stück selber entwickeln. Während der Entwicklung kann das Projekt im
jeweiligen Zustand bereits gestartet werden, um die bis dahin eingebauten
Elemente zu testen.
Typische Anreize Das Spiel bietet die folgenden typischen Anreize, die Ihnen bei Spielen
immer wieder begegnen werden:
� Es gibt einen Spieler, der von Ihnen bewegt werden muss.
� Sie können durch Ihre Geschicklichkeit Punkte sammeln.
� Sie haben einige Leben zur Verfügung, die Sie aber verlieren können.
� Das Spiel wird im Verlauf immer schwieriger.
� Anzeigen informieren Sie über den Spielstand.
� Eine Zeitmessung motiviert Sie, immer schneller zu werden.
� Eine Anleitung erläutert Ihre Möglichkeiten.
2.1 Starten Sie das Spiel
Öffnen Sie zunächst das Verzeichnis der Unity-Projekte, das Sie in der Ein-
führung im Abschnitt »Projektverzeichnis und Vorlagen« festgelegt haben.
Starten Sie das ausführbare Programm TomsJumpAndRun.exe im Unter-
verzeichnis TomsJumpAndRun/Builds. Als Erstes erscheint ein Dialogfeld
zur Konfiguration.
Konfiguration Stellen Sie auf der Registerkarte Graphics die Werte wie in Abbildung 2.1
ein, und betätigen Sie die Schaltfläche Play!. Für einige Sekunden er-
scheint der Startbildschirm der Unity Personal Edition und anschließend
das Spiel, siehe Abbildung 2.2. Die Spielfelder in meinen Projekten haben
ein Größenverhältnis von 16 zu 9. Es bietet sich an, eine Bildschirmauflö-
sung im selben Verhältnis zu nutzen, also zum Beispiel 1366 zu 768.
2.2 Wie geht das Spiel?
39
Abbildung 2.1 Einstellungswerte für das ausführbare Programm
2.2 Wie geht das Spiel?
Ziel des SpielsEs handelt sich um ein einfaches Jump&Run-Spiel, in dem Sie den Spieler
bewegen können. Ziel des Spiels ist es, Punkte zu sammeln und gleichzeitig
Gefahren aus dem Wege zu gehen. Das Spiel lässt sich eigentlich auch ohne
Anleitung spielen. Dennoch möchte ich den Ablauf hier erläutern, damit
wir es anschließend in allen Einzelheiten selber programmieren können.
Abbildung 2.2 Das Spiel »TomsJumpAndRun«
Spieler bewegenGemäß der Anleitung am oberen Rand des Spielfelds können Sie den
schwarzen Spieler mit den Tasten (í) und (î) in die entsprechenden
Richtungen bewegen. Mit der Taste (ì) können Sie den Spieler springen
lassen. Sie können den Spieler auch während eines Sprungs nach links oder
rechts bewegen. Die weißen Plattformen können Sie für eine Landung und
für einen weiteren Absprung nutzen.
2 Spielen Sie ein 2D-Jump&Run-Spiel
40
Punkte sammeln Berührt der Spieler bei einem Sprung den grünen Gewinn, so erhalten Sie
einen Punkt. Anschließend erscheint der Gewinn an einer anderen Stelle.
Mit Verlauf des Spiels wird der Gewinn schwerer erreichbar, da er weiter
oben platziert wird. Nach dem Erreichen von sechs Punkten haben Sie das
Spiel gewonnen. Die Zeit, die Sie dafür benötigt haben, wird festgehalten.
Leben verlieren Berührt der Spieler eine der roten, sich selbständig bewegenden Gefahren,
so verliert er eines seiner drei Leben. Nach dem Verlust des letzten Lebens
ist das Spiel verloren.
Anzeigen Links oben sehen Sie einige Anzeigen:
� Ihren aktuellen Punktestand
� die aktuelle Anzahl an Leben, die Ihnen noch verbleiben
� die laufende Spielzeit seit der ersten Bewegung des Spielers
� die Zeit, die Sie beim vorherigen Versuch benötigt haben
Rechts oben sehen Sie zwei Schaltflächen:
� zum Start eines neuen Spiels
� zur Beendigung der gesamten Anwendung.
Kommentare Am oberen Rande des Spielfelds erscheinen verschiedene Informationen.
Zu Beginn steht dort die bereits erwähnte kurze Spielanleitung. Nach Erlan-
gen eines Punkts, nach Verlust eines Lebens und nach Spielende steht dort
ein entsprechender Kommentar.
Spielen So, dann legen Sie einmal los, und spielen Sie einige Runden, damit Sie die
Bewegungen, Elemente und Reaktionen des Spiels kennenlernen.
2.3 Unsere ersten Unity-Elemente
Betrachten wir die einzelnen Elemente des Spiels im Unity Editor. Dabei
machen wir uns bereits mit einigen Begriffen vertraut, die wir später zur
Entwicklung benötigen.
Projekt öffnen Starten Sie dazu Unity, und betätigen Sie rechts oben den Link Open. Es öff-
net sich ein Dialogfeld, in dem standardmäßig das Verzeichnis der Unity-
Projekte angezeigt wird, das Sie in der Einführung im Abschnitt »Projekt-
verzeichnis und Vorlagen« festgelegt haben. Sollte ein anderes Verzeichnis
angezeigt werden, so müssen Sie das richtige Verzeichnis zunächst im
Dialogfeld aufsuchen. Anschließend werden alle Projektverzeichnisse an-
2.3 Unsere ersten Unity-Elemente
41
gezeigt. Wählen Sie das Verzeichnis TomsJumpAndRun aus, indem Sie es
einmal anklicken. Betätigen Sie die Schaltfläche Ordner auswählen.
AnsichtEs öffnet sich der Unity Editor mit dem ausgewählten Projekt. Die Scene
View zeigt das Spielfeld inklusive seines weißen Rahmens. Sollte das Spiel-
feld nicht vollständig zu sehen sein, sollten Sie das Layout des Unity
Editors und die Ansicht der Scene View durch Größenänderung und
Verschiebung noch anpassen, siehe Abschnitt 1.9.
2.3.1 Assets
Schauen wir uns zunächst die Assets für das Projekt an. Sie sind zur besse-
ren Übersicht in Verzeichnissen gruppiert.
Asset-VerzeichnisseNachdem wir in der Project View das Hauptverzeichnis Assets markiert
haben, sehen wir das Asset Szene1 für die einzige Szene des Spiels und die
beiden Unterverzeichnisse Scripts und Sprites, siehe Abbildung 2.3.
Abbildung 2.3 Assets, Hauptverzeichnis
VerzeichnisansichtViele Elemente im Unity Editor haben Unterelemente. Das erkennen Sie
an dem Pfeil links neben dem Namen des betreffenden Elements, hier am
Beispiel des Hauptverzeichnisses Assets. Mit einem Klick auf den Pfeil
können Sie die Verzeichnisse auf- und zuklappen, also die Unterelemente
ein- oder ausblenden, wie bei einer Verzeichnisansicht im Windows Ex-
plorer.
C#-ScripteNach der Markierung des Unterverzeichnisses Scripts in der Project
View sehen wir zwei Assets vom Typ C#-Script. Sie sind erkennbar an den
Symbolen für die Script-Dateien Gefahren.cs und Spieler.cs, siehe Abbil-
dung 2.4. Über die Symbole können wir die Programme erreichen, die in
der Programmiersprache C# geschrieben sind:
2 Spielen Sie ein 2D-Jump&Run-Spiel
42
Spieler.cs � In der Script-Datei Spieler.cs findet sich die Klasse Spieler, in der die Ei-
genschaften und das Verhalten des schwarzen Spielers festgelegt wer-
den. Außerdem werden von hier aus die meisten Abläufe gesteuert, da
es sich bei dem Spieler um das wichtigste Objekt des Spiels handelt. Das
umfasst zum Beispiel den Start und das Ende des Spiels, die Zeitmes-
sung, das Erfassen von Punkten und Leben, die verschiedenen Anzeigen
und einiges mehr.
Gefahren.cs � In der Klasse Gefahren in der Script-Datei Gefahren.cs werden die Eigen-
schaften der sechs roten Gefahren festgelegt.
Abbildung 2.4 Script-Assets
Sprites Falls wir auf der linken Seite der Project View das Unterverzeichnis
Sprites markieren, sehen wir einige Assets vom Typ Sprite. Sie sind er-
kennbar an den Symbolen für die vier Bilddateien Gruen.png, Rot.png,
Schwarz.png und Weiss.png, siehe Abbildung 2.5.
Abbildung 2.5 Sprite-Assets
Verwendung Jede Datei ist einfarbig gestaltet und hat eine Größe von 30 mal 30 Pixel.
Die Assets werden für die verschiedenen Teile des Spielfelds verwendet:
Schwarz für den Spieler, Gruen für den Gewinn, Rot für die Gefahren und
Weiss für die Begrenzung und die Plattformen.
2.3 Unsere ersten Unity-Elemente
43
2.3.2 Spielobjekte
MarkierenWir untersuchen die verschiedenen Spielobjekte in der Hierarchy View,
siehe Abbildung 2.6. Dabei markieren wir nacheinander die angesproche-
nen Elemente von oben nach unten, damit wir sie jeweils in der Scene
View identifizieren können und die wichtigen Eigenschaften und ihre
Werte in der Inspector View betrachten können.
Abbildung 2.6 Spielobjekte in der Hierarchy View
Das Spielobjekt Main Camera in der Mitte des Spielfelds haben Sie bereits in
Abschnitt 1.3 kennengelernt.
Spielobjekt
»Spieler«
Das Spielobjekt Spieler basiert auf dem Sprite-Asset Schwarz und hat meh-
rere wichtige Komponenten, siehe Abbildung 2.7:
� In der Transform-Komponente sehen Sie die Position und die Größe.
Rigidbody 2D� Die Komponente Rigidbody 2D sorgt dafür, dass sich der Spieler so
ähnlich wie ein Objekt in der realen Welt verhält, das den Gesetzen der
Physik unterliegt. Das bewirkt im vorliegenden Fall, dass die Schwerkraft
den Spieler nach unten zieht und Kollisionen mit anderen Spielobjekten
bemerkt werden können.
Box Collider 2D� Die Komponente Box Collider 2D bestimmt die Form des Kollisions-
objekts. Häufig stimmt sie mit der sichtbaren Form des Spielobjekts
überein. Zudem sorgt dieser Collider dafür, dass der Spieler keine der
Begrenzungen oder Plattformen durchdringen kann. Er fällt also zum
Beispiel nicht einfach aufgrund der Schwerkraft durch den Boden.
C#-Script� In der Komponente Spieler (Script) ist dem Spielobjekt das Script-
Asset Spieler zugeordnet. Damit wird festgelegt, dass sich das Spielob-
jekt so verhält, wie es in dem C#-Script vorgegeben wird.
Ein Box Collider 2D ist rechteckig, daher ist er für alle Spielobjekte in die-
sem Projekt geeignet.
2 Spielen Sie ein 2D-Jump&Run-Spiel
44
Spielobjekt
»Gewinn«
Das Spielobjekt Gewinn basiert auf dem Sprite-Asset Gruen. In Abbildung 2.8
erkennen Sie die Größe. Außerdem sehen Sie die Position des ersten Ge-
winns nach Start des Spiels. Eine Kollision mit dem Spieler muss bemerkt
werden, damit es Punkte gibt. Daher hat auch dieses Spielobjekt eine Kom-
ponente Box Collider 2D.
Abbildung 2.7 Spielobjekt »Spieler«,
Komponenten
Abbildung 2.8 Spielobjekt »Gewinn«,
Komponenten
Tag Im oberen linken Bereich sehen Sie, dass das Spielobjekt den Tag Gewinn be-
sitzt. Ein Tag (englisch für Etikett, Schildchen) ist eine Marke, die Sie einem
Spielobjekt zuordnen können. Mehrere Spielobjekte können dasselbe Tag
haben. So können Sie Spielobjekte zu logischen Gruppen zusammenfassen
und einzelne Spielobjekte oder Gruppen von Spielobjekten im C#-Code
voneinander unterscheiden.
Begrenzungen
und Plattformen
Das Spielobjekt Raum in Abbildung 2.9 dient lediglich als Verzeichnis für die
untergeordneten Spielobjekte, siehe auch Abschnitt 1.6. Diese bilden die
Begrenzung des Spielfelds und die Plattformen. Alle basieren auf dem
Sprite-Asset Weiss. Markieren Sie einmal nacheinander die Spielobjekte in
der Hierarchy View, um ihre Lage in der Scene View und ihre Kompo-
nenten in der Inspector View zu betrachten. Ich empfehle Ihnen, in Ihren
Projekten ähnlich selbsterklärende Namen zu wählen.
Spielfeld nicht
verlassen
Alle Spielobjekte besitzen einen Box Collider 2D. Auf diese Weise wird
zum Beispiel verhindert, dass der schwarze Spieler aufgrund der Schwer-
kraft durch den Boden oder eine der Plattformen fallen kann. So kann er
auch das Spielfeld nicht durch eine der Wände verlassen.
2.3 Unsere ersten Unity-Elemente
45
Abbildung 2.9 Begrenzung des Spielfelds und Plattformen
Spielobjekte
für Gefahren
Das Spielobjekt Gefahren in Abbildung 2.10 dient als Verzeichnis für die ins-
gesamt sechs roten Gefahren. Alle basieren auf dem Sprite-Asset Rot. In der
Inspector View sehen Sie, dass alle das Tag Gefahr besitzen. Wie der grüne
Gewinn besitzen auch diese Spielobjekte einen Box Collider 2D, damit
eine Kollision mit dem schwarzen Spieler bemerkt werden kann.
Abbildung 2.10 Gefahren
C#-ScriptIn der Komponente Gefahren (Script) ist allen sechs Spielobjekten das
Script-Asset Gefahren zugeordnet. Damit wird festgelegt, dass sie sich so
verhalten, wie es in dem C#-Script vorgegeben wird.
User InterfaceDas Spielobjekt UI in Abbildung 2.11 dient als Verzeichnis für die Elemente
der Benutzeroberfläche. Der Begriff UI steht abkürzend für user interface,
zu deutsch: Schnittstelle zum Benutzer.
Rect TransformUI-Elemente besitzen eine Komponente des Typs Rect Transform statt
einer Komponente des Typs Transform. Sie umfasst besondere Eigenschaf-
ten zur Anordnung auf der Benutzeroberfläche
Komponente TextDie insgesamt fünf Anzeigen und die Text-Unterelemente der beiden
Schaltflächen (engl.: Buttons) dienen zum Anzeigen von Beschriftungen.
Daher besitzen Sie eine Komponente Text (Script) zur Erfassung und For-
matierung des dargestellten Texts.
2 Spielen Sie ein 2D-Jump&Run-Spiel
46
UI in Game View In der Game View sehen Sie die ersten vier Anzeigen oben links, die Info-
Anzeige oben in der Mitte und die beiden Schaltflächen oben rechts. Fokus-
sieren Sie die UI-Elemente einmal nacheinander mithilfe der Taste (F), um
sie auch in der Scene View betrachten zu können. Anschließend sollten Sie
wieder das Spielobjekt Main Camera fokussieren, um das eigentliche Spiel-
feld zu sehen.
EventSystem Das Spielobjekt EventSystem wird automatisch mit dem ersten UI-Element
hinzugefügt und dient im Hintergrund zur Behandlung von UI-Ereignis-
sen, zum Beispiel einem Klick auf eine Schaltfläche.
Abbildung 2.11 Benutzeroberfläche
Lassen Sie sich nicht irritieren, falls Unity einmal kurzfristig ein Grafik-Pro-
blem haben sollte, siehe Abbildung 2.12. Wechseln Sie einmal zwischen
Scene View und Game View, oder starten Sie das Spiel und beenden Sie es.
Anschließend wird wieder das »normale« Bild angezeigt.
Abbildung 2.12 Grafik-Problem
213
10 Ein 3D-Balancer
Kapitel 10
Ein 3D-Balancer
Sie entwickeln einen 3D-Balancer, den Sie in meinem Projekt TomsBalancer
finden. Dabei balancieren Sie eine Kugel auf einer Platte, treffen ein Ziel-
objekt und sammeln dadurch Punkte, möglichst ohne den Rand der Platte
zu berühren. Es kommen einige Elemente und Techniken zum Einsatz, die
Sie bereits in der Einführung für 3D-Projekte in Kapitel 8 kennengelernt ha-
ben. Zunächst sollen Sie es selber spielen, um es kennenzulernen.
10.1 Führen Sie das Spiel aus
KonfigurationÖffnen Sie das Verzeichnis der Unity-Projekte. Starten Sie das ausführbare
Programm TomsBalancer.exe im Unterverzeichnis TomsBalancer/Builds.
Wählen Sie auf dem Dialogfeld zur Konfiguration eine Auflösung im Ver-
hältnis von 16:9 (zum Beispiel 1366 mal 768 oder 1280 mal 720), die beste
Grafikqualität und eine Fensterdarstellung. Das Spiel sehen Sie in Abbil-
dung 10.1.
Android-AppDas Beispielprojekt zum Herunterladen beinhaltet – hier noch nicht sicht-
bar – eine Schaltfläche zum Beenden der Anwendung. Sie wird in Abschnitt
21.3 zur Erstellung einer Android-App benötigt.
Abbildung 10.1 Das Spiel »TomsBalancer«
Anordnung
der Achsen
Im Projekt TomsBalancer verläuft die X-Achse in der Mitte des Bodens der
hellbraunen Spielplatte von links nach rechts. Auf die Y-Achse wird in dem
10 Ein 3D-Balancer
214
Spiel kein Bezug genommen; sie verläuft von unten nach oben und
»durchbohrt« das Zentrum der Platte. Die Z-Achse verläuft, aus Richtung
des Benutzers gesehen, in der Mitte des Bodens der Platte von vorne nach
hinten. Die Platte ist um keine der Achsen gedreht, also ausbalanciert. Da-
her steht die braune Spieler-Kugel still.
Platte drehen Sie können die Platte inklusive ihrer hellbraunen Ränder und des grünen
Gewinn-Würfels drehen. Mithilfe der Taste (í) und der Taste (î) drehen
Sie sie um die Z-Achse, also kippt sie nach links oder nach rechts. Mithilfe
der Taste (ì) und der Taste (ë) drehen Sie sie um die X-Achse, also kippt
sie vom Benutzer weg oder zum Benutzer hin. Als Folge davon rollt die Ku-
gel in die entsprechende Richtung. Sobald sich die Kugel in Z-Richtung be-
wegt, also vom Benutzer weg- oder zum Benutzer hinrollt, bewegt sich die
Kamera mit.
Punkte Ziel des Spiels ist es, möglichst viele Punkte zu sammeln. Falls Sie mit der
Kugel den Würfel treffen, erhalten Sie einen Punkt. Nach einem solchen
Treffer erscheint der Würfel an einer anderen Stelle. Sobald Sie den Rand
treffen, wird Ihnen ein Punkt abgezogen.
Drehwinkel Die beiden Hilfsanzeigen unter der Punkte-Anzeige geben den Winkel an,
um den die Platte aktuell bezüglich der X-Achse und der Z-Achse gedreht
ist. Sie werden feststellen, dass die Platte maximal um 7.5 Grad zu einer
Seite gekippt werden kann. Ansonsten wäre es zu schwierig, die rollende
Kugel vor dem Rand abzufangen. Zudem könnte die Kugel über den Rand
fallen.
Spielen So, dann machen Sie sich einmal mit den Bewegungen vertraut, und ver-
suchen Sie, mehr Punkte zu gewinnen als zu verlieren.
10.2 Bereiten Sie das Spiel vor
Die Spielobjekte und die Benutzeroberfläche werden erzeugt. Sie lernen
das Konzept der relativen Transform-Werte genauer kennen.
10.2.1 Erzeugen Sie Projekt und Assets
Projekt anlegen Zur Entwicklung des eigenen Spiels wird zunächst ein neues 3D-Projekt an-
gelegt, zum Beispiel mit dem Namen MeinBalancer. Der Unity Editor öff-
net sich mit dem neuen Projekt. Wie immer sollten die beiden Schalter
16:9 und Maximize on Play bereits eingestellt sein.
10.2 Bereiten Sie das Spiel vor
215
Kamera und LichtDas Spielobjekt Main Camera erhält die Position 0/4/–10 und die Rotation
30/0/0. So schauen wir von schräg oben auf die Platte. Die Lichtquelle
Directional Light verbleibt an der Position 0/3/0 und bei der Rotation
50/330/0.
Oberflächen-material
Legen Sie in der Project View das Asset-Verzeichnis Materials an, und
erstellen Sie darin drei Assets für Oberflächenmaterialien, siehe Abschnitt
8.1.4. Bei der Eigenschaft Albedo werden die RGB-Werte 184/124/62 für das
Material DBraunMat, 85/118/57 für das Material DGruenMat und 248/125/0 für
das Material HBraunMat eingestellt.
Legen Sie zudem das Asset-Verzeichnis Scripts an, in dem wir später die
C#-Programme ablegen. Vergessen Sie nicht, mindestens nach jedem Ab-
schnitt die geänderte Spielszene zu speichern.
10.2.2 Erzeugen Sie Spielfeld und UI
PlatteErzeugen Sie ein einfaches 3D-Objekt vom Typ Cube mit dem Namen
Platte, mit der Position 0/–0.15/0 und dem Scale 10/0.3/10.
Ränder und GewinnErzeugen Sie fünf weitere einfache 3D-Objekte vom Typ Cube, ordnen Sie
sie dem Spielobjekt Platte unter und setzen Sie die Werte ihrer jeweiligen
Transform-Komponente zunächst zurück, und zwar wieder anhand des
Zahnrad-Menüs. Aus den neuen Spielobjekten werden die vier Ränder und
der Gewinn geformt, mithilfe von relativen Scale-Werten. Dazu mehr in Ab-
schnitt 10.2.3. Benennen Sie sie wie folgt: RandLinks, RandRechts, RandVorne,
RandHinten und Gewinn.
SpielerErzeugen Sie zudem ein einfaches 3D-Objekt vom Typ Sphere, und nennen
Sie es Spieler. Alle einfachen 3D-Objekte besitzen automatisch von Beginn
an einen passenden Collider.
Weisen Sie der Platte und den Rand-Objekten das Oberflächenmaterial
HBraunMat zu, dem Gewinn das Oberflächenmaterial DGruenMat und dem
Spieler das Oberflächenmaterial DBraunMat.
Das Spielobjekt Spieler befindet sich an der Position 0/3/0. Die Scale-Wer-
te stehen unverändert bei 1/1/1. Das Spielobjekt erhält eine Rigidbody-
Komponente, bei der die Eigenschaft Use Gravity markiert bleibt.
Drei AnzeigenErzeugen Sie auf dieselbe Weise wie in einem 2D-Projekt eine Benutzer-
oberfläche. Sie beinhaltet die drei Textfelder PunkteAnzeige, XWinkelAnzeige
und ZWinkelAnzeige innerhalb eines Canvas, den Sie UI nennen. Es gelten
die Werte aus Tabelle 10.1.
10 Ein 3D-Balancer
216
10.2.3 Relative Transform-Werte
Leeres Spielobjekt Wir haben bereits mehrmals leere Spielobjekte als Verzeichnis für andere
Spielobjekte genutzt. Das diente meist nur der besseren Übersicht in der
Hierarchy View. Die Transform-Daten eines leeren Spielobjekts sind je-
weils mithilfe des Zahnrad-Menüs zurückgesetzt, und zwar auf 0/0/0 für
Position und Rotation sowie auf 1/1/1 für Scale.
Aktives Spielobjekt In diesem Projekt dient ein aktives Spielobjekt mit eigenen Transform-
Daten als Verzeichnis für andere Spielobjekte: Das Spielobjekt Platte stellt
gleichzeitig das Verzeichnis für die vier Rand-Objekte und den Gewinn dar,
siehe Abbildung 10.2. Diese Spielobjekte sind der Platte untergeordnet. Das
bietet folgenden großen Vorteil: Sobald die Platte bewegt wird, bewegen
sich die anderen Spielobjekte mit.
Abbildung 10.2 Übergeordnetes Spielobjekt »Platte«
Name Werte
PunkteAnzeige Ausgangspunkt für die Positionierung: top/left
Pos X/Pos Y: 20/–20
Width/Height: 160/30
Text: Punkte: 0
Font Size: 18
Color: RGB 0/0/0
XWinkelAnzeige Wie PunkteAnzeige, außer:
Pos X/Pos Y: –20/–50
Text: xWinkel: 0.0
ZWinkelAnzeige Wie PunkteAnzeige, außer:
Pos X/Pos Y: –20/–80
Text: zWinkel: 0.0
Tabelle 10.1 Elemente der Benutzeroberfläche
10.2 Bereiten Sie das Spiel vor
217
Relative Transform-
Werte
Die in Tabelle 10.2 angegebenen Transform-Werte der untergeordneten
Spielobjekte für den Rand und den Gewinn sind keine absoluten Werte,
sondern beziehen sich auf die Transform-Daten des übergeordneten Spiel-
objekts Platte. Die Rotation beträgt jeweils 0/0/0.
Relative PositionZum Verständnis einer relativen Position betrachten wir einmal die X-Wer-
te: Die relative X-Position –0.5 befindet sich am linken Rand der Platte, die
relative X-Position 0.5 befindet sich am rechten Rand der Platte. Das kön-
nen Sie an den X-Positionen der Spielobjekte RandLinks und RandRechts er-
kennen.
Relativer ScaleEinen relativen Scale-Wert erläutere ich anhand der Y-Werte: Der Gewinn
ist in Y-Richtung doppelt so dick wie die Platte (Faktor 2). Alle Ränder sind
in Y-Richtung jeweils anderthalbmal so dick wie die Platte (Faktor 1.5).
Absolute Trans-
form-Werte
Falls Sie einmal aus Neugier die absoluten Werte für Position oder Scale der
untergeordneten Spielobjekte berechnen möchten, multiplizieren Sie ein-
fach die entsprechenden Werte des übergeordneten Spielobjekts mit den
relativen Werten des untergeordneten Spielobjekts. Ein Beispiel: Der
Gewinn hat die absoluten Scale-Werte 10 × 0.06, 0.3 × 2 und 10 × 0.06, also
0.6/0.6/0.6.
Ansicht einstellenStellen Sie in der Scene View die folgende Ansicht her: Die X-Achse weist
nach rechts, die Y-Achse weist nach oben, die Z-Achse demzufolge nach
hinten. Die Ansicht wird ganz leicht gedreht, damit wir später auf die Platte
schauen wie in Abbildung 10.1.
Name Position Scale
Platte 0/–0.15/0 10/0.3/10
RandLinks –0.495/1.2/0 0.01/1.5/1
RandRechts 0.495/1.2/0 0.01/1.5/1
RandVorne 0/1.2/–0.495 1/1.5/0.01
RandHinten 0/1.2/0.495 1/1.5/0.01
Gewinn 0.2/1.55/–0.2 0.06/2/0.06
Tabelle 10.2 Spielobjekte vom Typ »Cube«
10 Ein 3D-Balancer
218
10.3 Erstellen Sie den Spielablauf
Zunächst soll die Platte um zwei Achsen gedreht werden können. Anschlie-
ßend wird die Punktzahl durch eine Berührung des Gewinns erhöht und
durch eine Kollision mit dem Rand vermindert.
10.3.1 Drehen Sie die Platte
Klasse »Platte« Die Platte soll mithilfe der Pfeil-Tasten nach links, nach rechts, vom Benut-
zer weg- und zum Benutzer hingedreht werden. Als Folge davon soll die Ku-
gel in die entsprechende Richtung rollen. Im Verzeichnis Scripts wird das
Script-Asset mit der Klasse Platte in der Datei Platte.cs erstellt. Die Klasse
soll wie folgt aussehen:
using UnityEngine;using UnityEngine.UI;public class Platte : MonoBehaviour{
float eingabeFaktor = 10;float grenzWinkel = 7.5f;
public Text xWinkelAnzeige;public Text zWinkelAnzeige;
void Update(){
float zEingabe = Input.GetAxis("Horizontal");float xEingabe = Input.GetAxis("Vertical");
float zWinkelNeu = transform.eulerAngles.z -zEingabe * eingabeFaktor * Time.deltaTime;
if (zWinkelNeu >= 0 && zWinkelNeu < 180&& zWinkelNeu > grenzWinkel)
zWinkelNeu = grenzWinkel;if (zWinkelNeu >= 180 && zWinkelNeu < 360
&& zWinkelNeu < 360 - grenzWinkel)zWinkelNeu = 360 - grenzWinkel;
float xWinkelNeu = transform.eulerAngles.x +xEingabe * eingabeFaktor * Time.deltaTime;
10.3 Erstellen Sie den Spielablauf
219
if (xWinkelNeu >= 0 && xWinkelNeu < 180&& xWinkelNeu > grenzWinkel) xWinkelNeu = grenzWinkel;
if (xWinkelNeu >= 180 && xWinkelNeu < 360&& xWinkelNeu < 360 - grenzWinkel)
xWinkelNeu = 360 - grenzWinkel;
transform.eulerAngles =new Vector3(xWinkelNeu, 0, zWinkelNeu);
xWinkelAnzeige.text =string.Format("xWinkel: {0,6:0.0}", xWinkelNeu);
zWinkelAnzeige.text =string.Format("zWinkel: {0,6:0.0}", zWinkelNeu);
}}
Listing 10.1 Klasse »Platte«
GrenzwinkelDer Eingabefaktor dient zur Skalierung der Eingabe des Benutzers bei der
Berechnung des neuen Drehwinkels. Der Grenzwinkel verhindert eine Dre-
hung, die einen Winkel von mehr als 7.5 Grad aufweist. Es werden zwei öf-
fentlich zugängliche Verweise auf die beiden Anzeigen für die aktuellen
Drehwinkel eingerichtet.
In der Methode Update() werden zunächst die Eingaben des Benutzers für
die Drehung um die beiden Achsen festgehalten. Es wird der neue Dreh-
winkel um die Z-Achse berechnet, der sich aus dem alten Drehwinkel und
der Eingabe des Benutzers ergibt. Bei der Begrenzung des Drehwinkels auf
maximal 7.5 Grad muss Folgendes beachtet werden:
Positiver
Drehwinkel
� Eine Drehung nach vorne oder nach links ergibt einen positiven Dreh-
winkel, zum Beispiel 5 Grad.
Negativer
Drehwinkel
� Eine Drehung nach hinten oder nach rechts ergibt einen negativen
Drehwinkel, zum Beispiel –5 Grad. Die entsprechende Komponente des
Vector3-Werts eulerAngles liefert für einen Drehwinkel von –5 Grad den
Wert 355 Grad, also 360–5 Grad.
Daher muss zunächst festgestellt werden, ob es sich um einen positiven
oder einen negativen Drehwinkel handelt. Anschließend kann bezüglich
des Grenzwerts geprüft werden:
10 Ein 3D-Balancer
220
Positiver
Grenzwert
� Falls der neue Drehwinkel im Bereich zwischen 0 und 180 Grad liegt und
den Grenzwert von 7.5 Grad überschreitet, wird der Winkel auf 7.5 Grad
gesetzt.
Negativer
Grenzwert
� Falls der neue Drehwinkel im Bereich zwischen 180 und 360 Grad liegt
und den Grenzwert von (360 – 7.5 =) 352.5 Grad unterschreitet, wird der
Drehwinkel auf 352.5 Grad gesetzt. Ebenso wird der neue Drehwinkel um
die X-Achse berechnet.
eulerAngles Aus den beiden neuen Drehwinkeln für X und Z wird der neue Vector3-
Wert für die Eigenschaft eulerAngles ermittelt; dann wird er zugewiesen.
Die beiden neuen Drehwinkel werden zur Kontrolle in den beiden Anzei-
gen ausgegeben. Sie werden mithilfe der Methode Format() auf eine Stelle
nach dem Komma formatiert.
Beispielansicht In Abbildung 10.3 sehen Sie die Platte und die beiden Anzeigen für den
Winkel, nachdem die Platte mithilfe der Taste (í) und der Taste (ë) bis zu
den Grenzwerten gedreht wurde und die Kugel daraufhin in die Ecke ge-
rollt ist. Die drei Anzeigen wurden zur Verdeutlichung kurzfristig in die
Nähe gesetzt.
Abbildung 10.3 Platte maximal gedreht
Ordnen Sie im Unity Editor das C#-Script dem Spielobjekt Platte zu, zie-
hen Sie die zwei Anzeigen für die Drehwinkel auf die zugehörigen Slots und
starten Sie das Spiel. Die Kugel fällt aufgrund der Schwerkraft auf die Platte.
Sie können die Platte um die beiden Achsen drehen. Allerdings rollt die Ku-
gel noch nicht. Dazu mehr im nächsten Abschnitt.
10.3.2 Bewegen Sie die Kugel und die Kamera
In diesem Abschnitt werden die beiden nachfolgenden Probleme gelöst:
10.3 Erstellen Sie den Spielablauf
221
Kein Rollen� Die Kugel rollt nur, falls die Platte bei ihrem Auftreffen bereits gedreht
ist.
Eindringen� Bewegen Sie die Kugel einmal an den hinteren Rand. Beim anschließen-
den schnellen Zurückkippen der Platte ist es möglich, dass die Kugel in
die Platte eindringt, siehe Abbildung 10.4.
Dieses unerwünschte Verhalten wird mithilfe von C# verhindert.
Abbildung 10.4 Die Kugel dringt in die Platte ein
Klasse »Spieler«Im Verzeichnis Scripts wird das Script-Asset mit der Klasse Spieler in der
Datei Spieler.cs erstellt. Die Klasse sieht zunächst wie folgt aus:
using UnityEngine;public class Spieler : MonoBehaviour{
public GameObject kamera;void Update(){
kamera.transform.position = new Vector3(0, 4, transform.position.z - 10);
}
void OnCollisionStay(Collision coll){
if (coll.gameObject.tag == "Platte"){
transform.position = new Vector3 (transform.position.x,transform.position.y + 0.001f, transform.position.z);
}}
}
Listing 10.2 Klasse »Spieler«, Kugel und Kamera bewegen
Neue TagsIm Unity Editor werden in der Liste Tags & Layers in der Inspector
View drei neue Tags eingeführt: Platte, Gewinn und Rand. Die beiden erstge-
10 Ein 3D-Balancer
222
nannten Tags werden den gleichnamigen Spielobjekten zugewiesen. Das
Tag Rand wird allen vier Rändern zugewiesen.
Kamera folgt in
Z-Richtung
Es wird ein öffentlich zugänglicher Verweis zur Kamera erzeugt. In der Me-
thode Update() wird die Z-Position der Kamera fortlaufend an die Z-Posi-
tion des Spielers angepasst. Zu Beginn steht der Spieler bei der Z-Position 0
und die Kamera bei der Z-Position –10. Diese Distanz in Z-Richtung wird
beibehalten.
Eindringen
verhindern
Bei einem vollständigen Kollisionsvorgang können nacheinander drei Me-
thoden aufgerufen werden: zu Beginn OnCollisionEnter(), im Verlauf On-
CollisionStay() und am Ende OnCollisionExit(). Achten Sie auch auf die
Namen der Methoden: Bei 2D-Projekten OnCollisionEnter2D(), bei 3D-Pro-
jekten OnCollisionEnter().
Im vorliegenden Fall wird die Methode OnCollisionStay() genutzt, um die
Y-Position der Kugel bei einem eventuellen, kurzzeitigen Verbleib in der
Platte um ein kleines Stück zu erhöhen. Das reicht aus, um das Eindringen
der Kugel in die Platte zu verhindern und somit auch das Rollen zu ermög-
lichen. Der Parameter ist vom Typ Collision und stellt einen Verweis auf
ein Objekt dar, das uns Daten zur Kollision liefern kann.
Testen Ordnen Sie im Unity Editor das C#-Script dem Spielobjekt Spieler zu, zie-
hen Sie die Kamera auf den zugehörigen Slot und starten Sie das Spiel. Die
Kugel dringt nicht mehr ein und rollt. Bei einer Bewegung in Z-Richtung
bewegt sich die Kamera mit.
10.3.3 Ändern Sie die Punktzahl
Falls Sie mit der Kugel den Würfel treffen, erhalten Sie einen Punkt. Nach
einem solchen Treffer erscheint der Würfel an einer anderen Stelle. Falls Sie
einen der Ränder treffen, wird Ihnen ein Punkt abgezogen. Sobald sich die
Kugel in Z-Richtung bewegt, also vom Benutzer weg- oder zum Benutzer
hinrollt, bewegt sich die Kamera mit.
Klasse »Spieler« Ergänzen Sie die Klasse Spieler wie folgt:
using UnityEngine;using UnityEngine.UI;public class Spieler : MonoBehaviour{
...public GameObject gewinn;
10.3 Erstellen Sie den Spielablauf
223
int punkte = 0;public Text punkteAnzeige;...void OnTriggerEnter(Collider coll){
if (coll.gameObject.tag == "Gewinn"){
punkte++;punkteAnzeige.text = "Punkte: " + punkte;gewinn.SetActive (false);Invoke ("NaechsterGewinn", 1);
}}
void NaechsterGewinn(){
gewinn.SetActive(true);gewinn.transform.localPosition = new Vector3(
Random.Range(-0.3f, 0.3f), 1.55f,Random.Range(-0.3f, 0.3f));
}
void OnCollisionEnter(Collision coll){
if (coll.gameObject.tag == "Rand"){
punkte--;punkteAnzeige.text = "Punkte: " + punkte;
}}...
}
Listing 10.3 Klasse »Spieler«, Punkte zählen
TriggerEine Kollision des Spielers mit dem Gewinn soll nur zum Punktezählen
führen, aber nicht zu einer Richtungsänderung des Spielers. Im Box Colli-
der des Gewinns wird daher die Markierung Is Trigger gesetzt. Eine Be-
rührung führt nun zu der Ereignismethode OnTriggerEnter(). Achten Sie
auch auf die Namen der Methoden: Bei 2D-Projekten OnTriggerEnter2D(),
bei 3D-Projekten OnTriggerEnter().
10 Ein 3D-Balancer
224
In der Klasse Spieler wird ein Punktezähler eingeführt und auf 0 gesetzt.
Zudem werden zwei öffentlich zugängliche Verweise zum Gewinn und zur
Punkte-Anzeige erzeugt.
Punktzahl erhöhen In der Methode OnTriggerEnter() wird geprüft, ob eine Berührung des Ge-
winns erfolgte. Ist das der Fall, wird die Punktzahl erhöht und neu ange-
zeigt. Der Gewinn wird deaktiviert und nach einer Sekunde in der Methode
NaechsterGewinn() wieder aktiviert. Seine relative Position auf der Platte
wird über die Eigenschaft localPosition mithilfe von zufälligen X- und
Z-Werten neu gesetzt.
Punktzahl
vermindern
Eine Kollision mit einem der Ränder führt zur Methode OnCollisionEnter()
und zu einer Verminderung der Punktzahl.
Testen Ziehen Sie den Gewinn und die Punkte-Anzeige auf die zugehörigen Slots,
und starten Sie das Spiel. Die Punkte-Anzeige ändert sich jetzt nach Berüh-
rungen des Gewinns und nach Kollisionen mit den Rändern.
10.3.4 Ideen für Ihre Erweiterungen
Einige Möglichkeiten für dieses Projekt:
� Ändern Sie die Größe und die rechteckige Form der Platte. Ändern Sie die
Größe der Kugel sowie die Anzahl und die Größe der Gewinn-Objekte.
� Setzen Sie die Platte aus einzelnen, unterschiedlichen rechteckigen Ele-
menten zusammen, sodass sich eine große Ebene ergibt. Die Elemente
werden alle gemeinsam auf einer Grundplatte angeordnet, jeweils mit
relativen Transform-Werten. Die Pfeiltasten führen zu einer Drehung
der Grundplatte und damit der gesamten Anordnung.
� Gehen Sie auf der Grundplatte in die dritte Dimension: Erstellen Sie mit-
hilfe von unterschiedlichen, teilweise gedrehten 3D-Cubes Rampen,
über die sich die Kugel auf eine höhere Ebene bewegen lässt, und Stufen,
über die die Kugel auf eine niedrigere Ebene herunterfällt.
� Platzieren Sie eine bestimmte Anzahl von Gewinn-Objekten an fest vor-
gegebenen Punkten; und führen Sie eine Zeitmessung ein. Der Benutzer
soll die Gewinn-Objekte in vorgegebener Reihenfolge in möglichst kur-
zer Zeit erreichen.
� Fügen Sie verschiedene Level und eine Highscore-Liste ein, siehe Ab-
schnitt 3.4.9.
Auf einen Blick
Auf einen Blick
Einführung ....................................................................................................... 17
1 Das erste 2D-Projekt ........................................................................... 24
2 Spielen Sie ein 2D-Jump&Run-Spiel ............................................. 38
3 Entwickeln Sie ein 2D-Jump&Run-Spiel ...................................... 47
4 Ein 2D-Breakout-Spiel ........................................................................ 93
5 Ein 2D-Spiel für zwei Spieler ............................................................ 127
6 Ein Gedächtnistrainer als 2D-Projekt ............................................ 146
7 Ein 2D-Space-Shooter ......................................................................... 164
8 Das erste 3D-Projekt ........................................................................... 184
9 Eine 3D-Animation .............................................................................. 200
10 Ein 3D-Balancer .................................................................................... 213
11 Ein 3D-Tetris .......................................................................................... 225
12 Ein Kopfrechentrainer als 3D-Projekt ........................................... 237
13 Golf spielen auf einem 3D-Terrain ................................................ 250
14 Jagen auf einem 3D-Terrain ............................................................. 275
15 Eine Schlange aus 3D-Joints ............................................................. 299
16 Ein Renntraining und ein Autorennen .......................................... 313
17 Erkunden Sie das Verlies ................................................................... 343
18 Ein Programmierkurs in C# ............................................................... 375
19 Speichern Sie eine Highscore-Liste ................................................ 414
20 Arbeiten Sie mit mehreren Szenen ................................................ 424
21 Weitere Plattformen .......................................................................... 431
Inhalt
5
Inhalt
Einführung ......................................................................................................................... 17
1 Das erste 2D-Projekt 24
1.1 Erstellung eines neuen Projekts ............................................................. 24
1.2 Wichtige Bereiche im Unity Editor ....................................................... 25
1.3 Das Spielobjekt »Main Camera« ............................................................ 27
1.4 Assets importieren ....................................................................................... 27
1.5 Spielobjekte einfügen ................................................................................ 28
1.6 Ändern der Hierarchie ................................................................................ 29
1.7 Eine Szene speichern ................................................................................... 30
1.8 Die Komponente »Transform« ............................................................... 31
1.8.1 Die Eigenschaften der Transform-Komponente .............. 31
1.8.2 Werte in der Inspector View ändern .................................... 32
1.9 Die Ansicht in der Scene View ................................................................. 34
1.9.1 Positionswerte mithilfe der Maus ändern ......................... 34
1.9.2 Rotationswerte mithilfe der Maus ändern ........................ 36
1.9.3 Scale-Werte mithilfe der Maus ändern ............................... 36
2 Spielen Sie ein 2D-Jump&Run-Spiel 38
2.1 Starten Sie das Spiel .................................................................................... 38
2.2 Wie geht das Spiel? ...................................................................................... 39
2.3 Unsere ersten Unity-Elemente ............................................................... 40
2.3.1 Assets .............................................................................................. 41
2.3.2 Spielobjekte .................................................................................. 43
Inhalt
6
3 Entwickeln Sie ein 2D-Jump&Run-Spiel 47
3.1 Erzeugen Sie Projekt und Assets ............................................................ 47
3.2 Fügen Sie Spielobjekte ein ....................................................................... 48
3.2.1 Erzeugen Sie das Spielfeld ....................................................... 48
3.2.2 Setzen Sie den Spieler auf den Boden ................................. 50
3.3 Erstellen Sie den Spielablauf ................................................................... 53
3.3.1 Führen Sie die Klasse »Spieler« ein ....................................... 53
3.3.2 Bewegen Sie den Spieler .......................................................... 55
3.3.3 Begrenzen Sie die Bewegung ................................................. 60
3.3.4 Treffen Sie den Gewinn ............................................................ 62
3.3.5 Vermeiden Sie die Gefahren ................................................... 65
3.3.6 Die geschweiften Klammern .................................................. 67
3.3.7 Die Gefahren bewegen sich .................................................... 68
3.4 Gestalten Sie die Benutzeroberfläche ................................................. 70
3.4.1 Erstellen Sie die erste Anzeige ................................................ 70
3.4.2 Sammeln Sie Punkte .................................................................. 72
3.4.3 Verlieren Sie Leben ..................................................................... 74
3.4.4 Messen Sie die Spielzeit ........................................................... 76
3.4.5 Speichern Sie Werte dauerhaft .............................................. 78
3.4.6 Geben Sie den Benutzern Hinweise ..................................... 80
3.4.7 Starten Sie ein neues Spiel ...................................................... 84
3.4.8 Beenden Sie die Anwendung .................................................. 87
3.4.9 Ideen für Ihre Erweiterungen ................................................. 89
3.5 Erzeugen Sie eine ausführbare Version .............................................. 89
3.6 Projekte umbenennen oder kopieren ................................................. 91
4 Ein 2D-Breakout-Spiel 93
4.1 Führen Sie das Spiel aus ............................................................................ 93
4.2 Erzeugen Sie Projekt und Assets ............................................................ 94
4.2.1 Fügen Sie ein Audio-Asset ein ................................................ 95
4.2.2 Erstellen Sie ein 2D-Material .................................................. 95
Inhalt
7
4.2.3 Lernen Sie 2D-Materialien kennen ....................................... 96
4.2.4 Erzeugen Sie ein Prefab ............................................................ 98
4.3 Fügen Sie Spielobjekte ein ....................................................................... 99
4.3.1 Füllen Sie das Spielfeld ............................................................. 99
4.3.2 Erzeugen Sie einen Ziegel ........................................................ 100
4.3.3 Wiederholen Sie den Vorgang ................................................ 101
4.3.4 Wiederholen Sie die Wiederholung ..................................... 103
4.4 Erstellen Sie den Spielablauf ................................................................... 104
4.4.1 Senden Sie den Ball ab .............................................................. 104
4.4.2 Bewegen Sie den Spieler .......................................................... 106
4.4.3 Sammeln Sie Punkte .................................................................. 107
4.4.4 Verlieren Sie Leben ..................................................................... 111
4.5 Gestalten Sie die Benutzeroberfläche ................................................. 114
4.5.1 Exportieren Sie ein Asset Package ........................................ 114
4.5.2 Importieren Sie ein Asset Package ........................................ 115
4.5.3 Passen Sie die Benutzeroberfläche an ................................. 116
4.5.4 Punkte, Leben und Infos anzeigen ........................................ 117
4.5.5 Messen Sie die Spielzeit ........................................................... 119
4.5.6 Zeigen Sie die vorherige Zeit an ............................................. 120
4.5.7 Starten Sie ein neues Spiel ...................................................... 122
4.5.8 Beenden Sie die Anwendung .................................................. 125
4.5.9 Ideen für Ihre Erweiterungen ................................................. 126
5 Ein 2D-Spiel für zwei Spieler 127
5.1 Führen Sie das Spiel aus ............................................................................ 127
5.2 Bereiten Sie das Spiel vor .......................................................................... 129
5.2.1 Erstellen Sie Projekt und Assets ............................................. 129
5.2.2 Erzeugen Sie Spielfeld und UI ................................................. 130
5.2.3 Positionieren Sie die Hindernisse .......................................... 132
5.3 Erstellen Sie den Spielablauf ................................................................... 134
5.3.1 Führen Sie den Aufschlag aus ................................................ 135
5.3.2 Bewegen Sie die Spieler vertikal ............................................ 136
5.3.3 Bewegen Sie die Spieler horizontal ...................................... 139
Inhalt
8
5.3.4 Sammeln Sie Punkte .................................................................. 141
5.3.5 Eine kleine Übung ....................................................................... 143
5.3.6 Ideen für Ihre Erweiterungen ................................................. 143
5.4 Künstliche Intelligenz ................................................................................. 144
6 Ein Gedächtnistrainer als 2D-Projekt 146
6.1 Führen Sie das Training aus ..................................................................... 146
6.2 Bereiten Sie das Training vor ................................................................... 147
6.2.1 Erzeugen Sie die Benutzeroberfläche .................................. 147
6.3 Das Training für drei Zahlen .................................................................... 148
6.3.1 Verteilen Sie die Zahlen ............................................................ 148
6.3.2 Vermeiden Sie doppelte Positionen ..................................... 151
6.3.3 Löschen Sie die Zahlen .............................................................. 153
6.3.4 Prüfen Sie die Reihenfolge ....................................................... 154
6.4 Die Erweiterung des Trainings ................................................................ 156
6.4.1 Machen Sie das Training leichter .......................................... 156
6.4.2 Machen Sie das Training schwerer ....................................... 158
6.4.3 Optimieren Sie das Training ................................................... 160
6.4.4 Ideen für Ihre Erweiterungen ................................................. 162
7 Ein 2D-Space-Shooter 164
7.1 Bereiten Sie das Spiel vor .......................................................................... 165
7.1.1 Gestalten Sie die beiden Explosions-Prefabs .................... 165
7.1.2 Erzeugen Sie Ihr Raumschiff und die Geschosse ............. 167
7.1.3 Erstellen Sie die anderen Raumschiffe ................................ 168
7.1.4 Gestalten Sie die Energieanzeige mit Layern .................... 169
7.1.5 Erstellen Sie die Benutzeroberfläche ................................... 169
7.2 Erstellen Sie den Spielablauf ................................................................... 170
7.2.1 Bewegen Sie Ihr Raumschiff und feuern Sie ..................... 170
7.2.2 Bewegen Sie die Geschosse nach dem Abfeuern ............ 172
7.2.3 Bewegen Sie die anderen Raumschiffe ............................... 173
Inhalt
9
7.2.4 Lassen Sie die Raumschiffe explodieren ............................. 175
7.2.5 Kollidieren Sie mit den anderen Raumschiffen ................ 177
7.2.6 Führen Sie weitere Änderungen der Energie herbei ....... 179
7.2.7 Messen Sie die Zeit, und beenden Sie das Spiel ............... 181
7.2.8 Eine kleine Übung ....................................................................... 182
7.2.9 Ideen für Ihre Erweiterungen ................................................. 183
8 Das erste 3D-Projekt 184
8.1 Grundlagen eines 3D-Projekts ................................................................ 184
8.1.1 Kamera, Skybox und Licht ........................................................ 184
8.1.2 Einfache 3D-Objekte .................................................................. 185
8.1.3 Meshes ........................................................................................... 187
8.1.4 Oberflächenmaterial erstellen und zuordnen .................. 187
8.1.5 Oberflächenmaterial wechseln ............................................. 188
8.1.6 Ansicht in der Scene View gestalten .................................... 189
8.2 Verschieben und Drehen ........................................................................... 190
8.2.1 Spielobjekte drehen ................................................................... 190
8.2.2 Animiert verschieben ................................................................ 193
8.2.3 Kamera bewegen ........................................................................ 195
8.2.4 Animiert drehen .......................................................................... 196
8.2.5 Übersicht ....................................................................................... 199
9 Eine 3D-Animation 200
9.1 Schaffen Sie die Voraussetzungen ....................................................... 200
9.1.1 Betrachten Sie die fertige Animation .................................. 200
9.1.2 Bauen Sie das Beispiel auf ....................................................... 201
9.2 Erstellen Sie die Animation ...................................................................... 202
9.2.1 Legen Sie die Animation an ..................................................... 202
9.2.2 Drehen Sie das rechte Bein ...................................................... 203
9.2.3 Erstellen Sie weitere Keyframes ............................................ 205
9.2.4 Stellen Sie die Keyframes ein .................................................. 205
9.2.5 Verschieben Sie das rechte Bein ............................................ 206
Inhalt
10
9.3 Arbeiten Sie mit dem Animator Controller ....................................... 207
9.3.1 Gestalten Sie die States ............................................................ 207
9.3.2 Erstellen Sie die Parameter ..................................................... 208
9.3.3 Erzeugen Sie die Transitionen ................................................ 209
9.4 Fügen Sie das C#-Script hinzu ................................................................. 210
9.4.1 Verbinden Sie Bewegung und Animation .......................... 210
9.4.2 Vervollständigen Sie die Animation ..................................... 211
9.4.3 Ideen für Ihre Erweiterungen ................................................. 212
10 Ein 3D-Balancer 213
10.1 Führen Sie das Spiel aus ............................................................................ 213
10.2 Bereiten Sie das Spiel vor .......................................................................... 214
10.2.1 Erzeugen Sie Projekt und Assets ............................................ 214
10.2.2 Erzeugen Sie Spielfeld und UI ................................................. 215
10.2.3 Relative Transform-Werte ....................................................... 216
10.3 Erstellen Sie den Spielablauf ................................................................... 218
10.3.1 Drehen Sie die Platte ................................................................. 218
10.3.2 Bewegen Sie die Kugel und die Kamera .............................. 220
10.3.3 Ändern Sie die Punktzahl ......................................................... 222
10.3.4 Ideen für Ihre Erweiterungen ................................................. 224
11 Ein 3D-Tetris 225
11.1 Führen Sie das Spiel aus ............................................................................ 225
11.2 Bereiten Sie das Spiel vor .......................................................................... 226
11.2.1 Erzeugen Sie Projekt und Assets ............................................ 226
11.2.2 Erzeugen Sie Spielfeld und UI ................................................. 227
11.2.3 Erstellen Sie das Würfel-Prefab ............................................. 228
11.3 Erstellen Sie den Spielablauf ................................................................... 228
11.3.1 Bewegen Sie die Würfel ........................................................... 228
11.3.2 Eine »generische Liste« ............................................................. 230
11.3.3 Fügen Sie Elemente zur Liste hinzu ...................................... 231
11.3.4 Entfernen Sie Elemente aus der Liste .................................. 233
Inhalt
11
11.3.5 Eine kleine Übung ....................................................................... 236
11.3.6 Ideen für Ihre Erweiterungen ................................................. 236
12 Ein Kopfrechentrainer als 3D-Projekt 237
12.1 Führen Sie das Training aus ..................................................................... 237
12.2 Bereiten Sie das Training vor ................................................................... 238
12.3 Erstellen Sie den Trainingsablauf .......................................................... 239
12.3.1 Erzeugen Sie die Aufgabe und die Lösungen .................... 239
12.3.2 Mischen Sie die Lösungen ........................................................ 242
12.3.3 Sammeln Sie Punkte .................................................................. 244
12.3.4 Verlieren Sie Leben ..................................................................... 246
12.3.5 Ideen für Ihre Erweiterungen ................................................. 249
13 Golf spielen auf einem 3D-Terrain 250
13.1 Führen Sie das Spiel aus ............................................................................ 250
13.2 Bereiten Sie das Spiel vor .......................................................................... 251
13.2.1 Erzeugen Sie Projekt und Landschaft ................................... 252
13.2.2 Weisen Sie der Landschaft eine Textur zu ......................... 252
13.2.3 Erstellen Sie die drei Ebenen ................................................... 254
13.2.4 Fügen Sie den Rand hinzu ........................................................ 256
13.2.5 Erstellen Sie die beiden Rampen ........................................... 258
13.2.6 Setzen Sie Spieler und Ziel in die Landschaft .................... 259
13.2.7 Arbeiten Sie mit einem Physic Material .............................. 260
13.3 Erstellen Sie den Spielablauf ................................................................... 261
13.3.1 Schlagen Sie den Spielball ....................................................... 261
13.3.2 Versetzen Sie das Ziel ................................................................ 264
13.3.3 Vermeiden Sie den Verlust des Spielballs .......................... 266
13.3.4 Ideen für Ihre Erweiterungen ................................................. 267
13.4 Ein weiteres Terrain ..................................................................................... 268
13.4.1 Erzeugen Sie zehn Ebenen ....................................................... 269
13.4.2 Fügen Sie den linken und den rechten Rand hinzu ......... 270
13.4.3 Fügen Sie den unteren und den oberen Rand hinzu ...... 270
Inhalt
12
13.4.4 Erzeugen Sie die erste Rampe ................................................ 271
13.4.5 Erstellen Sie alle Rampen links ............................................... 272
13.4.6 Erstellen Sie alle Rampen rechts ............................................ 273
13.4.7 Setzen Sie die Positionen ......................................................... 274
14 Jagen auf einem 3D-Terrain 275
14.1 Führen Sie das Spiel aus ............................................................................ 275
14.2 Bereiten Sie das Spiel vor .......................................................................... 278
14.2.1 Erzeugen Sie Projekt und Landschaft ................................... 278
14.2.2 Steuern Sie den Zufall ............................................................... 278
14.2.3 Erzeugen Sie die weiteren Spielobjekte .............................. 282
14.2.4 Erstellen Sie die drei Prefabs ................................................... 283
14.2.5 Zoomen Sie mithilfe eines Sliders ......................................... 284
14.3 Erstellen Sie den Spielablauf ................................................................... 287
14.3.1 Bewegen Sie den Jäger ............................................................. 287
14.3.2 Treffen Sie die Ziele .................................................................... 289
14.3.3 Die Ziele starten eine Abwehr ................................................ 292
14.3.4 Die Abwehr wird gefährlich .................................................... 293
14.3.5 Messen Sie die Zeit ..................................................................... 296
14.3.6 Ideen für Ihre Erweiterungen ................................................. 297
15 Eine Schlange aus 3D-Joints 299
15.1 Führen Sie das Spiel aus ............................................................................ 299
15.2 Bereiten Sie das Spiel vor .......................................................................... 300
15.2.1 Erzeugen Sie die Assets und die Platte ................................ 300
15.2.2 Erstellen Sie die Schlange und ihre Beute .......................... 301
15.2.3 Stellen Sie die gelenkigen Verbindungen her ................... 302
15.3 Erstellen Sie den Spielablauf ................................................................... 303
15.3.1 Bewegen Sie die Schlange ....................................................... 304
15.3.2 Treffen Sie die Beute ................................................................. 305
15.3.3 Verkürzen Sie die Schlange ..................................................... 306
15.3.4 Zählen Sie die Punkte ................................................................ 308
Inhalt
13
15.3.5 Die Segmente treffen den Rand ............................................ 309
15.3.6 Messen Sie die Zeit ..................................................................... 310
15.3.7 Ideen für Ihre Erweiterungen ................................................. 312
16 Ein Renntraining und ein Autorennen 313
16.1 Führen Sie das Renntraining aus ........................................................... 313
16.2 Führen Sie das Autorennen aus ............................................................. 315
16.3 Bereiten Sie das Renntraining vor ........................................................ 317
16.3.1 Erzeugen Sie das Projekt und die Fahrbahn ...................... 317
16.3.2 Konstruieren Sie das Fahrzeug ............................................... 318
16.3.3 Fügen Sie die Wheel Collider hinzu ...................................... 319
16.4 Erstellen Sie den Ablauf des Renntrainings ...................................... 321
16.4.1 Beschleunigen Sie das Fahrzeug ........................................... 321
16.4.2 Lenken Sie das Fahrzeug .......................................................... 322
16.4.3 Folgen Sie dem Fahrzeug mit der Kamera ......................... 324
16.4.4 Bauen Sie die Begrenzungen auf ........................................... 326
16.4.5 Eine »Lichtschranke« an der Startlinie ................................ 328
16.4.6 Messen Sie die Rundenzeiten ................................................. 330
16.5 Erweitern Sie das Renntraining zum Autorennen ......................... 332
16.5.1 Erzeugen Sie das zweite Fahrzeug ........................................ 332
16.5.2 Steuern Sie die Fahrzeuge getrennt ..................................... 334
16.5.3 Teilen Sie den Bildschirm auf ................................................. 336
16.5.4 Eine dritte Kamera für den Überblick .................................. 337
16.5.5 Getrennte Rundenzeiten nach einem Countdown ......... 338
16.5.6 Ideen für Ihre Erweiterungen ................................................. 342
17 Erkunden Sie das Verlies 343
17.1 Führen Sie das Spiel aus ............................................................................ 343
17.1.1 Der Ablauf des Spiels ................................................................. 344
17.2 Bereiten Sie das Spiel vor .......................................................................... 347
17.2.1 Die Planung des Verlieses ........................................................ 347
17.2.2 Der Aufbau einer Kammer ...................................................... 348
Inhalt
14
17.2.3 Erstellen Sie die ersten Spielobjekte .................................... 350
17.2.4 Bauen Sie das Prefab für die Kammer ................................ 351
17.2.5 Die Schlüssel, Kisten und Sperren ......................................... 353
17.2.6 Gestalten Sie die Benutzeroberfläche ................................. 355
17.3 Erstellen Sie den Spielablauf ................................................................... 356
17.3.1 Folgen Sie dem Spieler mit der Kamera .............................. 356
17.3.2 Erstellen Sie alle Kammern ...................................................... 358
17.3.3 Konfigurieren Sie die Kammern ............................................ 360
17.3.4 Gehen Sie durch ein Tor ........................................................... 362
17.3.5 Nehmen Sie den Schlüssel aus einer Schatzkiste ............ 365
17.3.6 Schließen Sie eine Sperre auf ................................................. 369
17.3.7 Speichern Sie den Spielstand .................................................. 371
17.3.8 Laden Sie den alten Spielstand .............................................. 372
17.3.9 Ideen für Ihre Erweiterungen ................................................. 374
18 Ein Programmierkurs in C# 375
18.1 Das Unity-Projekt »Programmierkurs« .............................................. 375
18.2 Grundlagen ...................................................................................................... 377
18.2.1 Variablen und Datentypen ...................................................... 377
18.2.2 Rechenoperatoren ...................................................................... 379
18.2.3 Division von ganzen Zahlen .................................................... 381
18.2.4 Verzweigungen ........................................................................... 382
18.2.5 Logische Verknüpfungen ......................................................... 384
18.2.6 Schleifen und Zufallszahlen .................................................... 386
18.3 Datenfelder ..................................................................................................... 390
18.4 Zeichenketten ................................................................................................ 394
18.5 Methoden ......................................................................................................... 396
18.5.1 Einfache Methode ...................................................................... 396
18.5.2 Methode mit Parametern ........................................................ 397
18.5.3 Methode mit Rückgabewert ................................................... 398
18.5.4 Methode mit Verweis-Parameter ......................................... 400
18.6 Generische Listen .......................................................................................... 401
18.6.1 Hilfsmethode »AusgabeListe()« ............................................. 403
18.6.2 foreach-Schleife .......................................................................... 404
Inhalt
15
18.7 Daten auf der Festplatte ........................................................................... 404
18.7.1 Daten speichern .......................................................................... 405
18.7.2 Daten laden .................................................................................. 406
18.7.3 Kontrolle der Daten ................................................................... 407
18.8 Objektorientierung ...................................................................................... 408
18.8.1 Die Spielobjekte im Unity Editor ........................................... 409
18.8.2 Die Klasse »Spieler« ................................................................... 409
18.8.3 Änderungen aller Objekte der Klasse .................................. 411
18.8.4 Änderungen einzelner Objekte .............................................. 412
19 Speichern Sie eine Highscore-Liste 414
19.1 Definition der eigenen Klasse ................................................................. 414
19.2 Nutzung der eigenen Klasse .................................................................... 416
19.2.1 Generische Liste erzeugen und füllen ................................. 416
19.2.2 Generische Liste anzeigen ....................................................... 418
19.2.3 Einen neuen Eintrag hinzufügen ........................................... 419
19.2.4 Alles speichern, alles löschen ................................................. 421
19.2.5 Der Anzeige-Schalter ................................................................. 422
20 Arbeiten Sie mit mehreren Szenen 424
20.1 Der Ablauf des Projekts ............................................................................. 424
20.2 Der Aufbau der ersten Szene ................................................................... 425
20.2.1 Die Klasse »Spieler« ................................................................... 425
20.3 Weitere Szenen ............................................................................................. 429
21 Weitere Plattformen 431
21.1 Installieren Sie Unity unter macOS Sierra ......................................... 431
21.2 Erstellen Sie eine Browser-Anwendung ............................................. 433
Inhalt
16
21.3 Erstellen Sie eine Android-App ............................................................... 434
21.3.1 Änderungen im Code ................................................................ 435
21.3.2 Weitere Komponenten und Anwendungen ...................... 436
21.3.3 Stellen Sie die Player Settings ein ......................................... 438
21.3.4 Führen Sie den Android-Build durch .................................... 439
21.3.5 Starten Sie die App unter Android ........................................ 440
21.4 Bereiten Sie eine iOS-App vor ................................................................. 440
21.4.1 Eine weitere Komponente ....................................................... 440
21.4.2 Führen Sie den iOS-Build durch ............................................. 441
Index .................................................................................................................................... 442
Index
442
Index
- 379
-- 113
! 69, 384
!= 61, 383
(float) 382
(int) 380
[ ] 150, 231, 391
{ } 53, 61, 67
* 379
*= 175, 380
/ 379
/* */ 58, 379
// 58, 379
/= 380
&& 69, 384
% 109, 379
%= 380
+ (Addition) 379
+ (Verkettung) 73, 378
++ 102, 388
+= 178, 380
< 61, 383
<= 61, 383
-= 380
== 61, 383
> 61, 383
>= 61, 383
|| 69, 384
16 zu 9 38
einstellen 51
2D 17
2D-Collider 51
2D-Material 95
zuordnen 98
2D-Projekt 24
3D 17
3D-Material 260
3D-Objekt, einfach 185
3D-Projekt 184
A
Achse
Benutzereingabe 58
Achse, Benutzereingabe 334
activeInHierarchy 369
activeSelf 172
Add
Component 50
Keyframe 205
Property 204
Tag 62
Textures 253
Add() 230, 233, 402
AddForce() 106
Addition 379
AddTorque() 191
Adventure 343
Albedo 187
Algorithmus 144
Alignment 81
Allradantrieb 322
Alpha-Wert 117
Alt Negative Button 334
Alt Positive Button 334
Anchor Presets 71
Android Package 439
Android SDK 436
Android SDK Manager 437
Android-App 434
Anführungsstriche 378
Angular Drag 191
Animation 200, 362
Aufzeichnung 206
Bedingung 209
Drehung 197
erstellen 203
Keyframe 204
Parameter 208
Parameter ändern 211
State hinzufügen 208
Transition 207
Transition erstellen 209
Verschiebung 193
Animation 200, 362 (Forts.)
Zeitskala 204
Zustand 207
Animation View 202
Animator Controller 203, 207
Anweisung 54
einzeln 67, 104, 383
lang 70
Anweisungsblock 61, 67
Anwendung beenden 87
Anzeige erstellen 70
APK 439
Application.Quit() 88
Array 149
Asset 25
importieren 27, 47
übernehmen 114
verschieben 48
Asset Package 114
Asset Store 22
AudioClip 109
Audio-Datei 95
abspielen 109
AudioListener entfernen 336
AudioSource 109
Aufprallverhalten 96, 261
Aufzählung 136
ausführbares Programm 38
Ausrichtung 81
Autorennen 313
B
Backbord 314
Balancer 213
Bedingung 61, 382
Beleuchtung 184
Benutzer-Eingabe 58, 136, 171
Benutzeroberfläche 45
erstellen 70
Beschleunigung 106
Drehmoment 322
Reibung 319
Index
443
Beschleunigung 106 (Forts.)
Sensor 435
Betrag 106, 111
Bildaufbau 55, 57
Bildschirmauflösung 38
bool 56, 377
Wert speichern 372
boolesche Variable 56, 377
Bounciness 96, 261
Box Collider 2D 43
hinzufügen 51
break 152, 390
Breakout 93
Browser-Anwendung 433
Build
Android 439
iOS 441
WebGL 434
Windows 90
Build Settings 90
löschen 429
mehrere Szenen 429
Reihenfolge 430
Build Support 20
Bundle Identifier 438
C
C# Script � Script
camelCase 57, 379
Canvas 70
Capsule 185
Cast 380, 382
Objekt 233
CheckBox 422
Children 30
Circle Collider 2D 51
class 54
Code speichern 59
Collider 43
ändern 52
Collision 222
Collision2D 63
Color 71
Conditions 209
Connected Body 303
Console View 25
Ausgabe 110
Constraints 227
Contains() 230
Convert 155, 246, 395
Count 231, 403
Countdown 339
Create Project 24
Cube 185
Curves 204
cw-Wert 313
Cylinder 186
D
Dämpfung 319
Dateiendung 19
Datenfeld 149, 390
an Methode 400
Dimensionsgröße 393
Größe 392
mischen 243
Datenkapselung 415
Datentyp 56, 377
generisch 230
umwandeln 155, 380, 395
Debug.Log() 110
Default Layer 169
Default State 208
Deklaration 57, 378
Datenfeld 150
mehrere 133
Depth 338
Destroy()
Komponente 307
Spielobjekt 109
Dezimalpunkt 33, 378
Directional Light 185
Division 379
ganzzahlig 381
do while 134, 386
Dokumentation 21
Dopesheet 204
double 378
Download Assistant
macOS 431
Windows 20
Drag 227
Nachteil 248
drehen
animiert 197
Kamera 195
Scene View 189
Spielobjekt 36, 190
Drehmoment 191, 322
zuordnen 192
Drehrichtung 192
Drehung � Rotation
Drehwiderstand 191
Drehwinkel 198, 219
dreidimensional 17
Dreieck 187
Dynamic Friction 261
E
Edit Collider 52
Eigenschaft
Klasse 55, 57, 408
öffentlich 159
statisch 58
Eingabe 58, 136, 171
Eingabefeld 420
elastischer Stoß 97
Element-Datenfeld 149
else 66, 382
else if 66
Endung 19
Energieanzeige 165
Entwicklungsumgebung 25
Enumeration 136
Ereignismethode 63, 86
error 59
eulerAngles 198, 219
EventSystem 46, 70
Exit Time 209
F
Fahrzeug 313
beschleunigen 322
lenken 323
false 56, 377
Index
444
Farbe einstellen 71
Federung 319
Fehlermeldung 59
Fett 80
Find() 307, 361
Fire1 334
Fire2 334
Fließkommazahl 56, 377
float 56, 377
fokussieren, Scene View 34
Font Size 80
Font Style 80
for 102, 386
foreach 404
Formatierung 77, 395
Freeze Rotation 227
Freie Assets 22
Friction 96, 260
G
Game View 25
einstellen 51
GameObject 63
gameObject 64, 66
ganzzahlige Division 109
Gedächtnistrainer 146
Gelenk 302
generische Liste 230, 401
generische Methode 105
Geschwindigkeit
Betrag 110
erhöhen 110
GetActiveScene() 427
GetComponent() 105
GetComponentInChildren()
154
GetMouseButtonDown() 263
GetMouseButtonUp() 263
GetUpperBound() 393
Gizmo 186
gleich 61, 383
Global 35
Glühbirne 185
Golf 250
Gravity Scale 50
größer als 61, 383
H
Has Exit Time 209
Hebelarm 191
Height 71
Hierarchie, Objekt
unterordnen 29
Hierarchy View 25
Highscore speichern 414
Hinge Joint 302
Hintergrund 184
Horizont 184
Horizontal (Achse) 58
I
if 61, 382
Index 149, 391
nicht erlaubt 151
IndexOf() 231
Input 58
acceleration 435
GetAxis() 58
GetButtonDown() 171
GetKey() 138
GetKeyDown() 136
Input Field 420
InputManager 58, 171, 334
Insert() 231, 402
Inspector View 25, 31
Wert ändern 33
Installation
Komponente 20, 90
macOS 431
Windows 19
Instantiate() 101
int 56, 377
Invoke() 66
iOS-App 440
Is Trigger 167
isometrisch 189
isOn 423
J
Java Development Kit 437
JDK 437
Joint 302
Jump & Run 38
K
Kachel 253
Kamera 27
Ausschnitt 336
Bild über Bild 338
drehen 195
folgt Spielobjekt 286, 324
mehrere 316, 336
Richtung 325
verschieben 195
zoomen 284
Kapsel 185
KeyCode 136
Keyframe 204
KI 144
Klammer, geschweift 53, 61, 67
Klasse 54
Definition 408
eigene 414
mehrfach zuordnen 69
zuordnen 55
kleiner als 61, 383
Kollision
bemerken 63, 222
Trigger 167
Verhalten 95, 260
Kommentar 57, 379
Komponente
Box Collider 2D 43
entfernen 52
hinzufügen 50
Menü 48, 52, 301
Rect Transform 45, 71
Rigidbody 191
Rigidbody 2D 43
Script 43
Text (Script) 71
Transform 31
Unity 20, 432
verschieben 52
zerstören 307
Zugriff 105, 154
Konstante 136
Index
445
Konstruktor 59, 415
nutzen 417
Kontrollausgabe 110
Koordinatenachse 31, 186
Kopfrechnen 237
Kraft 106
Kraft mal Hebelarm 191
Kugel 185
Künstliche Intelligenz 144
L
Laden von Festplatte 79, 405
Landschaft 250
Layer 169
Layout, Unity Editor 26
Length 392
lenken 323
Lenkwinkel 323
Level 424
Licht 184
Lichtschranke 328
linke Hand 192
Linke-Hand-Regel 32, 186
List < > 232, 402
Liste 230
LoadScene() 428
Local 35
localEulerAngles 323
localScale 178
logischer Wert 56, 377
logisches Nicht 69, 384
logisches Oder 69, 384
logisches Und 69, 384
lokale Variable 57
LookAt() 325
Luftwiderstand 227
M
macOS, Installation Unity 431
magnitude 110
Main Camera 27
Manual 21
Masse 318
material 189
Material, Oberfläche 187
Maus-Position 263
Maustaste
nach oben 263
nach unten 263
Mesh 187
Methode 396
Aufruf 66, 397
Definition 396
Ereignis 63, 86
generisch 105
Klasse 55, 408
öffentlich 86
Parameter 397
Rückgabe Objekt 420
Rückgabewert 398
zeitverzögert 66
Modularisierung 396
Modulo 109, 379
Mono Develop 53
schließen 55
MonoBehaviour 54, 408
motorTorque 322
mousePosition 263
Multiplikation 379
N
Name
Konvention 57, 379
Regel 56, 378
Namensraum 54, 376
Konflikt 246
namespace 54
Navigation 284, 356
Negative Button 334
new
List 232, 402
Objekt 59
None 114, 284, 356
Nullpunkt 59
O
Oberflächenmaterial 187
wechseln 188
Objekt
erzeugen 59
klonen 101
Startwerte 79
Verweis 63
Objektorientierung 408
OnClick() 87
OnCollisionEnter() 222, 224
OnCollisionEnter2D() 63
OnCollisionExit() 222
OnCollisionStay() 222
OnTriggerEnter() 223
OnTriggerEnter2D() 167
OnValueChanged
Slider 286
Toggle 423
Operator
logisch 69, 384
Rechen- 379
Reihenfolge 380
Vergleich 61, 383
Verknüpfung 69, 384
Order in Layer 169
Orientierung 435
Ortsvektor 59
P
Package
exportieren 114
importieren 115
Parameter
Animation 208
Methode 397
Parenting 30
Partikelsystem 165, 283
Personal Edition 18
perspektivisch 186
Physic Material 260
Physics 191
Physics 2D 50
Physics2D Material 95
Placeholder 420
PlayClipAtPoint() 109
Player Settings 91, 438
PlayerPrefs
DeleteAll() 405
Index
446
PlayerPrefs (Forts.)
GetFloat() 79, 405
GetInt() 405
GetString() 405
HasKey() 79, 405
Save() 79, 405
SetFloat() 79, 404
SetInt() 404
SetString() 404
Point Light 185
Polygon Collider 2D 52
Pong 127
Position 31
ändern 59
begrenzen 61
relativ 217
UI-Element 71
Positive Button 334
Prefab 98
erstellen 98
instanziieren 101
Prefab-Asset 98
Professional Edition 18
Programmierkurs 375
Programmierumgebung 53
Project Settings 58
Project View 25
Verzeichnis 41
Projekt
ausführbare Version 89
Einstellungen 58
erstellen 24, 184
kopieren 92
öffnen 40
Skizze 348
testen 47
Titelzeile 91
umbenennen 91
Projektverzeichnis 22
public
Eigenschaft 159
Klasse 54
Methode 86
Objekt 63
Punkt, Schreibweise 59
Q
Quaternion 101
identity 101
Querbeschleunigung 319
R
Rad 319
Random.Range() 388
Fließkommazahl 64
ganze Zahl 150
Raumschiff 164
Rechenoperator 379
Rect Transform 45, 71
ändern 150
Reibung 96, 260
Re-Import 23
Remove() 231
RemoveAt() 231, 403
Liste 236
Rennen 313
Rest 109, 379
return 61, 399
Richtung 106, 111
Richtungsvektor 106, 110
Rigidbody 191
Masse 318
Rigidbody 2D 43
beschleunigen 106
Geschwindigkeit 110
hinzufügen 50
Rotate() 196
RotateAround() 196
Rotation 32
Objekt 101
relativ 323
verhindern 227
Rückgabewert 398
Rückgängig machen 30
S
Scale 32
ändern 178
relativ 217
Scene 427
Scene View 25
ändern 34, 189
SceneManager 426
Schaltfläche
Aufschrift 85
Ereignis verbinden 86
erstellen 84
Scharniergelenk 302
Scheinwerfer 185
Schieberegler 284
Schlange 299
Schleife 102, 134, 386
abbrechen 152, 390
abwärts 235
foreach 404
geschachtelt 103
Variable 102
Schlüsselwort 379
Schriftfarbe 71
Schriftgröße 80
Schriftstil 80
Schwerkraft
2D 50
3D 191
Script
erstellen 53
Name 53
Script-Asset 43
Scripting Reference 21
Script-Komponente
hinzufügen 55
Seitenverhältnis 51
SetActive() 66
SetBool() 211
SetHeights() 256
Skalieren eines Spielobjekts 37
Skybox 184
Slider 284
wechselt Wert 286
Slot 64
verbinden 64, 74
Snake 299
Sorting Layer 169
Space Shooter 164
Speichern auf Festplatte 78,
404
Sphere 185
Index
447
Spiel
Anreize 38
beenden 51, 87
starten 51
Spielfeld vergrößern 51
Spielobjekt
aktivieren 66
aktiviert 172
als Verzeichnis 30
animieren 203
bewegen 141
Bezugspunkt 303
deaktivieren 66
drehen 36, 190
einfügen 28
entfernen 49
Existenz prüfen 369
finden 307
gemeinsame Werte 50
gleichartig 98
gruppieren 44
hintereinander 169
kopieren 49, 74
kopieren mit Bezügen 333
markieren 43
Name 44
übergeordnet 29
untergeordnet finden 361
unterordnen 29
verbinden 303
vergrößern 36
verkleinern 36
verschieben 35, 59, 193
zerstören 109
zerstört sich 294
Split Screen 336
Spot Light 185
Sprite 27
wechseln 427
sprite 427
Sprite Renderer 28
Sprite-Asset 42
SpriteRenderer 427
Sprites/Default 28
Start() 79
State 207
Static Friction 261
statisch 58
Statuszeile 110
steerAngle 323
Steuerbord 314
string 56, 377
Format() 77, 395
Substring() 155, 394
Substring() 155, 394
Subtraktion 379
Symbolleiste 34
System
Collections.Generic 232
Convert 155, 246
Szene
kopieren 429
Regeln 429
speichern 30
wechseln 424
T
Tag 44
hinzufügen 62
tag 64
Tags & Layers 62
Taktik 277
Taste
ist unten 138
nach unten 136
nicht reagieren 284, 356
virtuell 171
WASD 314, 334
Teilbarkeit 109
Teilzeichenkette 155
Terrain 250
Höhe 252
Höhe zuweisen 256
Textur 252
terrainData 255
Test 47
Tetris 225
text
Input Field 420
Textelement 73
Text � Zeichenkette
Textfeld erstellen 70
Textur 252
Tiling-Textur 253
Time
deltaTime 57
time 77
Toggle 422
ToInt32() 155, 395
Tor öffnen 362
torque 322
Touch-Oberfläche 435
Transform 31
relativ 217
zurücksetzen 48
transform position 59
Transition 207
Translate() 141, 196
Transparenz einstellen 117
Trigger 167
true 56, 377
U
UI 45
Position 71
ungleich 61, 383
Unity Editor 25
Unity-Account 22
UnityEngine 54
SceneManagement 426
UnityEngine.UI 73
unitypackage 114
Untagged 62
Untereigenschaft 59
Update() 55
Use Gravity 191
user interface 45
using 54
V
value-Slider 286
Variable 56, 377
Gültigkeit 57
Vector2 106
Vector3 59
Vektor 59, 106, 110
velocity 110
Vererbung 54, 408
Index
448
Vergleichsoperator 61, 383
Verkettungsoperator 378
Verknüpfung, sinnlos 386
Verknüpfungsoperator 69, 384
Verlies 343
verschieben
animiert 193
Asset 48
Kamera 195
Scene View 34, 189
Spielobjekt 35, 59, 193
Version 23
Vertical (Achse) 58
Verweis
auf andere Klasse 113
Datenfeld 149
Komponente 105
Objekt 63
öffentlich 63
umwandeln 233
Verweistyp 401
Verzeichnis 41
Verzeichnis erstellen
Hierarchy View 48
Project View 47
Verzweigung 61, 382
mehrfach 66, 384
View 25
Viewport Rect 336
void 399
W
Wahrheitswert 56, 377
WASD-Tasten 314, 334
WebGL 433
Werttyp 401
Wheel Collider 314, 319
Width 71
Wiederholung 102, 386
Winkel 198, 219
Würfel 185
X
X-Achse 31
Xcode 440
Y
Y-Achse 32
Z
Z-Achse 32
Zahl
ganz 56, 377
mit Nachkommastellen 56,
377
Zahnrad
Menü 52, 301
Zahnrad-Menü 48
Zeichenkette 56, 377
formatieren 77, 395
Teilzeichenkette 155, 394
verketten 73
Zeit messen 76
Zeitskala-Animation 204
zoomen
Scene View 189
zoomen, Scene View 34
Zufallszahl 64, 386
Zugriffsmodifizierer 54
Zuordnung lösen 113
Zuweisung 378
kombiniert 380
Reihenfolge 159
zweidimensional 17
Zylinder 186
Thomas Theis
Einstieg in Unity – Ideal für Programmieranfänger448 Seiten, broschiert, in Farbe, Februar 2017 29,90 Euro, ISBN 978-3-8362-4292-9
www.rheinwerk-verlag.de/4211
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel-lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Thomas Theis ist Diplom-Ingenieur für Technische Informa-tik und hat langjährige Erfahrung als IT-Dozent, unter ande-rem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual Basic und Webprogrammierung und ist Autor zahlreicher erfolgreicher Fachbücher. Einsteiger und Neulin-ge schätzen seine Fähigkeit, auch komplizierte Sachverhalte leicht verständlich zu machen und dabei auch den Spaß am Programmieren nie aus den Augen zu verlieren.
Wissen, wie’s geht.
top related