Seifert Spiele entwickeln mit Unity 5
1. aktualisierte und erweiterte Auflage 2015
ISBN: 978-3-446-44580-2
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile
E-Book, Deutsch, 642 Seiten
ISBN: 978-3-446-44580-2
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
Spiele entwickeln mit Unity 5//
- Für alle, die ihr eigenes Spiel entwickeln wollen; Vorkenntnisse sind nicht erforderlich
- Im Internet: die Games aus dem Buch mit allen Ressourcen, Videotutorials zur Vertiefung und weitere Beispiele, Zusatzmaterialien
Entwerfen Sie komplexe 3D-Welten; kombinieren Sie die unterschiedlichen Tools und Techniken, die Unity bietet; entwickeln Sie zusammen mit dem Autor zwei komplette Spiele.
AUS DEM INHALT //
Installation & Oberfläche von Unity 5.0 // Einführung in C# // Skript-Programmierung // Objekte in der 2. und 3. Dimension // Physically Based Shading // Kameras: die Augen des Spielers // Licht und Schatten // Physik-Engine // Maus, Tastatur, Touch // Audio // Partikeleffekte mit Shuriken // Landschaften gestalten // Wind Zones // GUI-Systeme // Prefabs // IInternet & Datenbanken // Animationen // Künstliche Intelligenz // Fehlersuche & Performance // Spiele erstellen & publizieren // Beispiel 1: 2D-Touch-Game // Beispiel 2: 3D-Adventure// Produktionsprozesse in der Spieleentwicklung
Autoren/Hrsg.
Fachgebiete
Weitere Infos & Material
1;Inhalt;6
2;Vorwort;24
3;1 Einleitung;26
3.1;1.1?Multiplattform-Publishing;26
3.2;1.2?Das kann Unity (nicht);27
3.3;1.3?Lizenzmodelle;27
3.4;1.4?Aufbau und Ziel des Buches;28
3.5;1.5?Weiterentwicklung von Unity;29
3.6;1.6?Online-Zusatzmaterial;29
4;2 Grundlagen;32
4.1;2.1?Installation;32
4.2;2.2?Oberfläche;32
4.2.1;2.2.1?Hauptmenü;34
4.2.2;2.2.2?Scene View;35
4.2.2.1;2.2.2.1?Navigieren in der Scene View;36
4.2.2.2;2.2.2.2?Scene Gizmo;36
4.2.3;2.2.3?Game View;37
4.2.4;2.2.4?Toolbar;38
4.2.5;2.2.5?Hierarchy;40
4.2.5.1;2.2.5.1?Parenting;41
4.2.6;2.2.6?Inspector;42
4.2.6.1;2.2.6.1?Kopfinformationen im Inspector;43
4.2.6.2;2.2.6.2?Variablen Werte zuweisen;43
4.2.6.3;2.2.6.3?Komponenten-Menüs;44
4.2.6.4;2.2.6.4?Preview-Fenster;45
4.2.7;2.2.7?Project Browser;45
4.2.7.1;2.2.7.1?Assets suchen und finden;46
4.2.7.2;2.2.7.2?Assets importieren;47
4.2.8;2.2.8?Console;47
4.3;2.3?Das Unity-Projekt;48
4.3.1;2.3.1?Neues Projekt anlegen;48
4.3.2;2.3.2?Bestehendes Projekt öffnen;49
4.3.2.1;2.3.2.1?Ältere Projekte öffnen;50
4.3.3;2.3.3?Projektdateien;50
4.3.4;2.3.4?Szene;50
4.3.5;2.3.5?Game Objects;51
4.3.6;2.3.6?Components;52
4.3.7;2.3.7?Tags;53
4.3.8;2.3.8?Layer;54
4.3.9;2.3.9?Assets;54
4.3.9.1;2.3.9.1?UnityPackage;55
4.3.9.2;2.3.9.2?Asset Import;55
4.3.9.3;2.3.9.3?Asset Export;56
4.3.9.4;2.3.9.4?Asset Store;56
4.3.10;2.3.10?Frames;57
4.4;2.4?Das erste Übungsprojekt;58
5;3 C# und Unity;60
5.1;3.1?Die Sprache C#;60
5.2;3.2?Syntax;61
5.3;3.3?Kommentare;62
5.4;3.4?Variablen;62
5.4.1;3.4.1?Namenskonventionen;62
5.4.2;3.4.2?Datentypen;63
5.4.3;3.4.3?Schlüsselwort var;64
5.4.4;3.4.4?Datenfelder/Array;64
5.4.4.1;3.4.4.1?Arrays erstellen;64
5.4.4.2;3.4.4.2?Zugriff auf ein Array-Element;65
5.4.4.3;3.4.4.3?Anzahl aller Array-Items ermitteln;65
5.4.4.4;3.4.4.4?Mehrdimensionale Arrays;65
5.5;3.5?Konstanten;66
5.5.1;3.5.1?Enumeration;66
5.6;3.6?Typkonvertierung;67
5.7;3.7?Rechnen;68
5.8;3.8?Verzweigungen;69
5.8.1;3.8.1?if-Anweisungen;69
5.8.1.1;3.8.1.1?Komplexere if-Anweisungen;70
5.8.2;3.8.2?switch-Anweisung;71
5.9;3.9?Schleifen;72
5.9.1;3.9.1?for-Schleife;72
5.9.1.1;3.9.1.1?Negative Schrittweite;73
5.9.1.2;3.9.1.2?break;73
5.9.2;3.9.2?Foreach-Schleife;73
5.9.3;3.9.3?while-Schleife;74
5.9.4;3.9.4?do-Schleife;74
5.10;3.10?Klassen;75
5.10.1;3.10.1?Komponenten per Code zuweisen;75
5.10.2;3.10.2?Instanziierung von Nichtkomponenten;76
5.10.3;3.10.3?Werttypen und Referenztypen;78
5.10.4;3.10.4?Überladene Methoden;78
5.11;3.11?Der Konstruktor;79
5.11.1;3.11.1?Konstruktoren in Unity;79
5.12;3.12?Lokale und globale Variablen;80
5.12.1;3.12.1?Namensverwechslung verhindern mit this;80
5.13;3.13?Zugriff und Sichtbarkeit;80
5.14;3.14?Statische Klassen und Klassenmember;81
5.15;3.15?Parametermodifizierer out/ref;82
5.16;3.16?Array-Übergabe mit params;83
5.17;3.17?Eigenschaften und Eigenschaftsmethoden;84
5.18;3.18?Vererbung;85
5.18.1;3.18.1?Basisklasse und abgeleitete Klassen;85
5.18.2;3.18.2?Vererbung und die Sichtbarkeit;86
5.18.3;3.18.3?Geerbte Methode überschreiben;86
5.18.4;3.18.4?Zugriff auf die Basisklasse;87
5.18.5;3.18.5?Klassen versiegeln;87
5.19;3.19?Polymorphie;88
5.20;3.20?Schnittstellen;88
5.20.1;3.20.1?Schnittstelle definieren;88
5.20.2;3.20.2?Schnittstellen implementieren;89
5.20.2.1;3.20.2.1?Unterstützung durch MonoDevelop;90
5.20.3;3.20.3?Zugriff über eine Schnittstellen;90
5.21;3.21?Namespaces;91
5.21.1;3.21.1?Eigene Namespaces definieren;91
5.22;3.22?Generische Klassen und Methoden;92
5.22.1;3.22.1?List;93
5.22.2;3.22.2?Dictionary;94
6;4 Skript-Programmierung;96
6.1;4.1?MonoDevelop;96
6.1.1;4.1.1?Hilfe in MonoDevelop;97
6.1.2;4.1.2?Syntaxfehler;97
6.2;4.2?Nutzbare Programmiersprachen;98
6.2.1;4.2.1?Warum C#?;98
6.3;4.3?Unitys Vererbungsstruktur;99
6.3.1;4.3.1?Object;99
6.3.2;4.3.2?GameObject;100
6.3.3;4.3.3?ScriptableObject;100
6.3.4;4.3.4?Component;100
6.3.5;4.3.5?Transform;101
6.3.6;4.3.6?Behaviour;101
6.3.7;4.3.7?MonoBehaviour;101
6.4;4.4?Skripte erstellen;101
6.4.1;4.4.1?Skripte umbenennen;102
6.5;4.5?Das Skript-Grundgerüst;102
6.6;4.6?Unitys Event-Methoden;103
6.6.1;4.6.1?Update;103
6.6.2;4.6.2?FixedUpdate;104
6.6.3;4.6.3?Awake;105
6.6.4;4.6.4?Start;105
6.6.5;4.6.5?OnGUI;105
6.6.6;4.6.6?LateUpdate;106
6.7;4.7?Komponentenprogrammierung;106
6.7.1;4.7.1?Auf GameObjects zugreifen;107
6.7.1.1;4.7.1.1?FindWithTag;107
6.7.1.2;4.7.1.2?FindGameObjectsWithTag;108
6.7.1.3;4.7.1.3?Find;108
6.7.2;4.7.2?GameObjects aktivieren und deaktivieren;108
6.7.3;4.7.3?GameObjects zerstören;109
6.7.4;4.7.4?GameObjects erstellen;109
6.7.5;4.7.5?Auf Components zugreifen;109
6.7.5.1;4.7.5.1?GetComponent;110
6.7.5.2;4.7.5.2?SendMessage;110
6.7.5.3;4.7.5.3?Direktzugriff;111
6.7.6;4.7.6?Components hinzufügen;111
6.7.7;4.7.7?Components entfernen;112
6.7.8;4.7.8?Components aktivieren und deaktivieren;112
6.7.9;4.7.9?Attribute;112
6.8;4.8?Zufallswerte;114
6.9;4.9?Parallel Code ausführen;115
6.9.1;4.9.1?WaitForSeconds;116
6.10;4.10?Verzögerte und wiederholende Funktionsaufrufe mit Invoke;116
6.10.1;4.10.1?Invoke;116
6.10.2;4.10.2?InvokeRepeating, IsInvoking und CancelInvoke;117
6.11;4.11?Daten speichern und laden;118
6.11.1;4.11.1?PlayerPrefs-Voreinstellungen;118
6.11.2;4.11.2?Daten speichern;119
6.11.3;4.11.3?Daten laden;119
6.11.4;4.11.4?Key überprüfen;120
6.11.5;4.11.5?Löschen;120
6.11.6;4.11.6?Save;120
6.12;4.12?Szeneübergreifende Daten;121
6.12.1;4.12.1?Werteübergabe mit PlayerPrefs;121
6.12.1.1;4.12.1.1?Startmenüs zur Initialisierung nutzen;122
6.12.2;4.12.2?Zerstörung unterbinden;123
6.12.2.1;4.12.2.1?DontDestroyOnLoad als Singleton;123
6.13;4.13?Debug-Klasse;124
6.14;4.14?Kompilierungsreihenfolge;125
6.14.1;4.14.1?Programmsprachen mischen und der sprachübergreifende Zugriff;125
6.15;4.15?Ausführungsreihenfolge;126
6.16;4.16?Plattformabhängig Code kompilieren;126
6.17;4.17?Eigene Assets mit ScriptableObject;127
6.17.1;4.17.1?Neue ScriptableObject-Subklasse erstellen;128
6.17.2;4.17.2?Instanzen eines ScriptableObjects erstellen;129
6.17.2.1;4.17.2.1?Eigener Menü-Knopf zum Erstellen von Assets;129
7;5 Objekte in der zweiten und dritten Dimension;132
7.1;5.1?Das 3D-Koordinatensystem;132
7.2;5.2?Vektoren;133
7.2.1;5.2.1?Ort, Winkel und Länge;134
7.2.2;5.2.2?Normalisieren;135
7.3;5.3?Das Mesh;136
7.3.1;5.3.1?Normalenvektor;137
7.3.2;5.3.2?MeshFilter und MeshRenderer;137
7.4;5.4?Transform;139
7.4.1;5.4.1?Kontextmenü der Transform-Komponente;139
7.4.2;5.4.2?Objekthierarchien;140
7.4.3;5.4.3?Scripting mit Transform;141
7.4.4;5.4.4?Quaternion;141
7.5;5.5?Shader und Materials;142
7.5.1;5.5.1?Der Standard-Shader;143
7.5.1.1;5.5.1.1?Rendering Mode;145
7.5.1.2;5.5.1.2?Main Maps;146
7.5.1.3;5.5.1.3?Secondary Maps;152
7.5.1.4;5.5.1.4?Metallic vs. Specular;154
7.5.2;5.5.2?Texturen;158
7.5.2.1;5.5.2.1?Import von Texturen;159
7.5.2.2;5.5.2.2?Normalmaps erstellen;160
7.5.3;5.5.3?UV Mapping;161
7.6;5.6?3D-Modelle einer Szene zufügen;163
7.6.1;5.6.1?Primitives;163
7.6.2;5.6.2?3D-Modelle importieren;164
7.6.2.1;5.6.2.1?Model Import Settings;165
7.6.3;5.6.3?In Unity modellieren;165
7.6.4;5.6.4?Prozedurale Mesh-Generierung;166
7.6.5;5.6.5?Level Of Detail;166
7.6.5.1;5.6.5.1?LODGroups;167
7.6.5.2;5.6.5.2?LOD-Qualitätseinstellungen;168
7.7;5.7?2D in Unity;168
7.7.1;5.7.1?Sprites;169
7.7.1.1;5.7.1.1?Sprite Editor;171
7.7.1.2;5.7.1.2?Sprite Packer;172
7.7.2;5.7.2?SpriteRenderer;174
7.7.2.1;5.7.2.1?Darstellungsreihenfolgen von Sprites;175
7.7.2.2;5.7.2.2?Sprite-Shader;176
7.7.3;5.7.3?Parallex Scrolling;177
8;6 Kameras, die Augen des Spielers;180
8.1;6.1?Die Kamera;180
8.1.1;6.1.1?Komponenten eines Kamera-Objektes;182
8.1.2;6.1.2?HDR – High Dynamic Range-Rendering;182
8.1.2.1;6.1.2.1?Rückwandeln mit Tonemapping;183
8.1.2.2;6.1.2.2?Abarbeitungsreihenfolge festlegen;184
8.1.3;6.1.3?Linearer- und Gamma-Farbraum;185
8.1.3.1;6.1.3.1?Die Gamma-Korrektur;185
8.1.3.2;6.1.3.2?Linear-Space und Gamma-Space in Unity;186
8.2;6.2?Kamerasteuerung;188
8.2.1;6.2.1?Statische Kamera;188
8.2.2;6.2.2?Parenting-Kamera;188
8.2.3;6.2.3?Kamera-Skripte;189
8.2.3.1;6.2.3.1?Kamera-Skripte programmieren;189
8.3;6.3?ScreenPointToRay;191
8.4;6.4?Mehrere Kameras;191
8.4.1;6.4.1?Kamerawechsel;191
8.4.2;6.4.2?Split-Screen;193
8.4.3;6.4.3?Einfache Minimap;194
8.4.4;6.4.4?Render Texture;195
8.5;6.5?Image Effects;197
8.5.1;6.5.1?Beispiel: Haus bei Nacht;197
8.6;6.6?Skybox;199
8.6.1;6.6.1?Mehrere Skyboxen gleichzeitig einsetzen;200
8.6.2;6.6.2?Skybox selber erstellen;201
8.7;6.7?Occlusion Culling;202
8.7.1;6.7.1?Occluder Static und Occludee Static;203
8.7.2;6.7.2?Occlusion Culling erstellen;204
9;7 Licht und Schatten;206
9.1;7.1?Ambient Light;206
9.2;7.2?Lichtarten;207
9.2.1;7.2.1?Directional Light;208
9.2.2;7.2.2?Point Light;209
9.2.3;7.2.3?Spot Light;209
9.2.4;7.2.4?Area Light;210
9.3;7.3?Schatten;211
9.3.1;7.3.1?Einfluss des MeshRenderers auf Schatten;212
9.4;7.4?Light Cookies;213
9.4.1;7.4.1?Import Settings eines Light Cookies;213
9.4.2;7.4.2?Light Cookies und Point Lights;214
9.5;7.5?Light Halos;215
9.5.1;7.5.1?Unabhängige Halos;216
9.6;7.6?Lens Flares;216
9.6.1;7.6.1?Eigene Lens Flares;217
9.7;7.7?Projector;217
9.7.1;7.7.1?Standard Projectors;217
9.8;7.8?Lightmapping;219
9.8.1;7.8.1?Light Probes;221
9.9;7.9?Rendering Paths;223
9.9.1;7.9.1?Forward Rendering;224
9.9.2;7.9.2?Vertex Lit;225
9.9.3;7.9.3?Deferred Lighting;226
9.10;7.10?Global Illumination;227
9.10.1;7.10.1?Baked GI;227
9.10.2;7.10.2?Precomputed Realtime GI;228
9.11;7.11?Reflexionen (Spiegelungen);228
9.11.1;7.11.1?Reflection Probes;229
9.12;7.12?Qualitätseinstellungen;232
9.12.1;7.12.1?Quality Settings;232
9.12.2;7.12.2?Qualitätsstufen per Code festlegen;232
10;8 Physik in Unity;234
10.1;8.1?Physikberechnung;234
10.2;8.2?Rigidbodies;235
10.2.1;8.2.1?Rigidbodies kennenlernen;236
10.2.2;8.2.2?Masseschwerpunkt;237
10.2.3;8.2.3?Kräfte und Drehmomente zufügen;238
10.2.3.1;8.2.3.1?AddForce-Methode;238
10.2.3.2;8.2.3.2?AddTorque-Methode;239
10.2.3.3;8.2.3.3?ConstantForce-Komponente;241
10.3;8.3?Kollisionen;241
10.3.1;8.3.1?Collider;241
10.3.1.1;8.3.1.1?Mesh Collider;242
10.3.1.2;8.3.1.2?Collider modifizieren;243
10.3.1.3;8.3.1.3?OnCollision-Methoden;244
10.3.2;8.3.2?Trigger;245
10.3.3;8.3.3?Static Collider;246
10.3.4;8.3.4?Kollisionen mit schnellen Objekten;246
10.3.5;8.3.5?Terrain Collider;248
10.3.6;8.3.6?Layer-basierende Kollisionserkennung;248
10.3.7;8.3.7?Mit Layer-Masken arbeiten;248
10.4;8.4?Wheel Collider;250
10.4.1;8.4.1?Wheel Friction Curve;251
10.4.2;8.4.2?Entwicklung einer Fahrzeugsteuerung;253
10.4.2.1;8.4.2.1?CarController.cs;258
10.4.3;8.4.3?Autokonfiguration;260
10.4.4;8.4.4?Fahrzeugstabilität;262
10.5;8.5?Physic Materials;263
10.6;8.6?Joints;264
10.6.1;8.6.1?Fixed Joint;264
10.6.2;8.6.2?Spring Joint;264
10.6.3;8.6.3?Hinge Joint;264
10.7;8.7?Raycasting;265
10.8;8.8?Character Controller;266
10.8.1;8.8.1?SimpleMove;267
10.8.2;8.8.2?Move;268
10.8.3;8.8.3?Kräfte zufügen;269
10.8.4;8.8.4?Einfacher First Person Controller;270
10.9;8.9?2D-Physik;272
10.9.1;8.9.1?OnCollision2D- und OnTrigger2D-Methoden;273
10.9.2;8.9.2?2D Physic Effectors;275
11;9 Maus, Tastatur, Touch;276
11.1;9.1?Virtuelle Achsen und Tasten;276
11.1.1;9.1.1?Der Input-Manager;276
11.1.2;9.1.2?Virtuelle Achsen;278
11.1.3;9.1.3?Virtuelle Tasten;278
11.1.4;9.1.4?Steuern mit Mauseingaben;279
11.1.5;9.1.5?Joystick-Inputs;279
11.1.6;9.1.6?Anlegen neuer Inputs;280
11.2;9.2?Achsen- und Tasteneingaben auswerten;280
11.2.1;9.2.1?GetAxis;280
11.2.2;9.2.2?GetButton;281
11.3;9.3?Tastatureingaben auswerten;282
11.3.1;9.3.1?GetKey;282
11.3.2;9.3.2?anyKey;282
11.4;9.4?Mauseingaben auswerten;283
11.4.1;9.4.1?GetMouseButton;283
11.4.2;9.4.2?mousePosition;284
11.4.3;9.4.3?Mauszeiger ändern;285
11.5;9.5?Touch-Eingaben auswerten;286
11.5.1;9.5.1?Der Touch-Typ;286
11.5.2;9.5.2?Input.touches;287
11.5.3;9.5.3?TouchCount;287
11.5.4;9.5.4?GetTouch;288
11.5.5;9.5.5?CrossPlatformInput;288
11.6;9.6?Beschleunigungssensor auswerten;290
11.6.1;9.6.1?Input.acceleration;290
11.6.2;9.6.2?Tiefpass-Filter;291
11.7;9.7?Steuerungen bei Mehrspieler-Games;292
11.7.1;9.7.1?Split-Screen-Steuerung;292
11.7.2;9.7.2?Netzwerkspiele;293
12;10 Audio;294
12.1;10.1?AudioListener;294
12.2;10.2?AudioSource;295
12.2.1;10.2.1?Durch Mauern hören verhindern;297
12.2.2;10.2.2?Sound starten und stoppen;299
12.2.3;10.2.3?Temporäre AudioSource;300
12.3;10.3?AudioClip;301
12.3.1;10.3.1?Länge ermitteln;301
12.4;10.4?Reverb Zone;301
12.5;10.5?Filter;303
12.6;10.6?Audio Mixer;303
12.6.1;10.6.1?Das Audio Mixer-Fenster;303
12.6.1.1;10.6.1.1?Die Audio-Steuerungseinheit;305
12.6.2;10.6.2?Audiosignalwege;307
12.6.2.1;10.6.2.1?Send & Receive;308
12.6.2.2;10.6.2.2?Duck Volume;309
12.6.3;10.6.3?Mit Snapshots arbeiten;311
12.6.4;10.6.4?Views erstellen;312
13;11 Partikeleffekte mit Shuriken;314
13.1;11.1?Editor-Fenster;315
13.2;11.2?Particle Effect Control;316
13.3;11.3?Numerische Parametervarianten;316
13.4;11.4?Farbparameter-Varianten;317
13.5;11.5?Default-Modul;317
13.6;11.6?Effekt-Module;318
13.6.1;11.6.1?Emission;319
13.6.2;11.6.2?Shape;319
13.6.2.1;11.6.2.1?Sphere;319
13.6.2.2;11.6.2.2?HemiSphere;319
13.6.2.3;11.6.2.3?Cone;319
13.6.2.4;11.6.2.4?Box;320
13.6.2.5;11.6.2.5?Mesh;320
13.6.3;11.6.3?Velocity over Lifetime;320
13.6.4;11.6.4?Limit Velocity over Lifetime;321
13.6.5;11.6.5?Force over Lifetime;321
13.6.6;11.6.6?Color over Lifetime;321
13.6.7;11.6.7?Color by Speed;321
13.6.8;11.6.8?Size over Lifetime;322
13.6.9;11.6.9?Size by Speed;322
13.6.10;11.6.10?Rotation over Lifetime;322
13.6.11;11.6.11?Rotation by Speed;322
13.6.12;11.6.12?External Forces;322
13.6.13;11.6.13?Collision;323
13.6.13.1;11.6.13.1?Planes;323
13.6.13.2;11.6.13.2?World;324
13.6.14;11.6.14?Sub Emitter;324
13.6.15;11.6.15?Texture-Sheet-Animation;324
13.6.16;11.6.16?Renderer;325
13.6.16.1;11.6.16.1?Billboard;326
13.6.16.2;11.6.16.2?Stretched Billboard;326
13.6.16.3;11.6.16.3?Horizontal Billboard;326
13.6.16.4;11.6.16.4?Vertical Billboard;326
13.6.16.5;11.6.16.5?Mesh;327
13.7;11.7?Partikelemission starten, stoppen und unterbrechen;327
13.7.1;11.7.1?Play;327
13.7.2;11.7.2?Stop;328
13.7.3;11.7.3?Pause;328
13.7.4;11.7.4?enableEmission;328
13.8;11.8?OnParticleCollision;328
13.8.1;11.8.1?GetCollisionEvents;329
13.9;11.9?Feuer erstellen;329
13.9.1;11.9.1?Materials erstellen;330
13.9.2;11.9.2?Feuer-Partikelsystem;331
13.9.3;11.9.3?Rauch-Partikelsystem;334
13.10;11.10?Wassertropfen erstellen;337
13.10.1;11.10.1?Tropfen-Material erstellen;337
13.10.2;11.10.2?Wassertropfen-Partikelsystem;338
13.10.3;11.10.3?Kollisionspartikelsystem;340
13.10.4;11.10.4?Kollisionssound;342
14;12 Landschaften gestalten;344
14.1;12.1?Was Terrains können und wo die Grenzen liegen;345
14.2;12.2?Terrainhöhe verändern;345
14.2.1;12.2.1?Pinsel;346
14.2.2;12.2.2?Oberflächen anheben und senken;346
14.2.3;12.2.3?Plateaus und Schluchten erstellen;347
14.2.4;12.2.4?Oberflächen weicher machen;348
14.2.5;12.2.5?Heightmaps;348
14.2.5.1;12.2.5.1?Reale Landschaften als Vorlagen nutzen;349
14.3;12.3?Terrain texturieren;350
14.3.1;12.3.1?Textur-Pinsel;351
14.3.2;12.3.2?Texturen verwalten;351
14.4;12.4?Bäume und Sträucher;353
14.4.1;12.4.1?Bedienung des Place Tree-Tools;353
14.4.2;12.4.2?Wälder erstellen;354
14.4.3;12.4.3?Mit Bäumen kollidieren;354
14.5;12.5?Gräser und Details hinzufügen;355
14.5.1;12.5.1?Detail-Meshs;355
14.5.2;12.5.2?Gräser;356
14.5.3;12.5.3?Quelldaten nachladen;357
14.6;12.6?Terrain-Einstellungen;357
14.6.1;12.6.1?Base Terrain;358
14.6.2;12.6.2?Resolution;358
14.6.3;12.6.3?Tree & Details Objects;359
14.6.4;12.6.4?Wind Settings;359
14.6.5;12.6.5?Zur Laufzeit Terrain-Eigenschaften verändern;360
14.7;12.7?Der Weg zum perfekten Terrain;361
14.8;12.8?Gewässer;362
15;13 Wind Zones;364
15.1;13.1?Spherical vs. Directional;365
15.2;13.2?Wind Zone – Eigenschaften;366
15.3;13.3?Frische Brise;367
15.4;13.4?Turbine;367
16;14 GUI;368
16.1;14.1?Das UI-System uGUI;369
16.1.1;14.1.1?Canvas;369
16.1.1.1;14.1.1.1?Render Modes;370
16.1.1.2;14.1.1.2?Canvas Scaler;372
16.1.2;14.1.2?RectTransform;373
16.1.2.1;14.1.2.1?Anchors;375
16.1.3;14.1.3?UI-Sprite Import;377
16.1.4;14.1.4?Grafische Controls;378
16.1.4.1;14.1.4.1?Text;378
16.1.4.2;14.1.4.2?Image;379
16.1.4.3;14.1.4.3?Raw Image;380
16.1.4.4;14.1.4.4?Panel;380
16.1.4.5;14.1.4.5?Effects;380
16.1.5;14.1.5?Interaktive Controls;381
16.1.5.1;14.1.5.1?Button;384
16.1.5.2;14.1.5.2?InputField;385
16.1.5.3;14.1.5.3?Toggle und Toggle Group;385
16.1.5.4;14.1.5.4?Slider;386
16.1.5.5;14.1.5.5?Scrollbar;387
16.1.6;14.1.6?Controls designen;387
16.1.7;14.1.7?Animationen in uGUI;388
16.1.8;14.1.8?Event Trigger;389
16.2;14.2?Screen-Klasse;390
16.2.1;14.2.1?Schriftgröße dem Bildschirm anpassen;391
16.3;14.3?OnGUI-Programmierung;391
16.3.1;14.3.1?GUI;392
16.3.1.1;14.3.1.1?Label;392
16.3.1.2;14.3.1.2?Button und RepeatButton;393
16.3.1.3;14.3.1.3?TextField und TextArea;393
16.3.1.4;14.3.1.4?Subfenster;394
16.3.2;14.3.2?GUILayout;395
16.3.2.1;14.3.2.1?Ausrichtung festlegen;395
16.3.3;14.3.3?GUIStyle und GUISkin;396
17;15 Prefabs;398
17.1;15.1?Prefabs erstellen und nutzen;398
17.2;15.2?Prefab-Instanzen erzeugen;398
17.2.1;15.2.1?Instanzen per Code erstellen;399
17.2.2;15.2.2?Instanzen weiter bearbeiten;399
17.3;15.3?Prefabs ersetzen und zurücksetzen;400
18;16 Internet und Datenbanken;402
18.1;16.1?Die WWW-Klasse;402
18.1.1;16.1.1?Rückgabewert-Formate;403
18.1.2;16.1.2?Parameter übergeben;404
18.1.2.1;16.1.2.1?WWWForm;404
18.2;16.2?Datenbank-Kommunikation;405
18.2.1;16.2.1?Daten in einer Datenbank speichern;405
18.2.2;16.2.2?Daten von einer Datenbank abfragen;406
18.2.3;16.2.3?Rückgabewerte parsen;408
18.2.4;16.2.4?Datenhaltung in eigenen Datentypen;408
18.2.5;16.2.5?HighscoreCommunication.cs;410
18.2.6;16.2.6?Datenbankverbindung in PHP;412
19;17 Animationen;414
19.1;17.1?Allgemeiner Animation-Workflow;415
19.2;17.2?Animationen erstellen;415
19.2.1;17.2.1?Animation View;416
19.2.2;17.2.2?Curves vs. Dope Sheet;417
19.2.3;17.2.3?Animationsaufnahme;417
19.2.3.1;17.2.3.1?Ansicht im Animation-Fenster anpassen;418
19.2.3.2;17.2.3.2?Sprite-Animationen;418
19.2.3.3;17.2.3.3?Root Motion-Kurven erstellen;421
19.2.4;17.2.4?Beispiel Fallgatter-Animation;422
19.3;17.3?Animationen importieren;423
19.3.1;17.3.1?Rig;424
19.3.1.1;17.3.1.1?Generic;424
19.3.1.2;17.3.1.2?Humanoid;424
19.3.2;17.3.2?Animationen;426
19.3.2.1;17.3.2.1?Animationen aufteilen;426
19.3.2.2;17.3.2.2?Importierte Animation-Clips bearbeiten;427
19.3.2.3;17.3.2.3?Mask;429
19.3.2.4;17.3.2.4?Events;429
19.4;17.4?Animationen einbinden;429
19.4.1;17.4.1?Animator Controller;429
19.4.1.1;17.4.1.1?Animation States erstellen;430
19.4.1.2;17.4.1.2?Transitions – Animation States wechseln;431
19.4.1.3;17.4.1.3?Any State nutzen;433
19.4.1.4;17.4.1.4?Blend Trees;433
19.4.1.5;17.4.1.5?Layer und Avatar Masks;434
19.4.1.6;17.4.1.6?Sub-State Machines;436
19.4.1.7;17.4.1.7?State Machine Behaviours;441
19.4.2;17.4.2?Animator-Komponente;445
19.4.3;17.4.3?Beispiel Fallgatter: Animator Controller;446
19.5;17.5?Controller-Skripte;448
19.5.1;17.5.1?Parameter des Animator Controllers setzen;448
19.5.1.1;17.5.1.1?Mit Hash-Werten arbeiten;449
19.5.2;17.5.2?Animation States abfragen;449
19.5.3;17.5.3?Beispiel Fallgatter Controller-Skript;450
19.6;17.6?Animation Events;452
20;18 Künstliche Intelligenz;454
20.1;18.1?NavMeshAgent;455
20.1.1;18.1.1?Eigenschaften der Navigationskomponente;456
20.1.2;18.1.2?Zielpunkt zuweisen;456
20.1.3;18.1.3?Pfadsuche unterbrechen und fortsetzen;457
20.2;18.2?NavigationMesh;457
20.2.1;18.2.1?Object Tab;459
20.2.2;18.2.2?Bake Tab;459
20.2.3;18.2.3?Areas Tab;460
20.3;18.3?NavMeshObstacle;461
20.4;18.4?Off-Mesh Link;462
20.4.1;18.4.1?Automatische Off-Mesh Links;462
20.4.2;18.4.2?Manuelle Off-Mesh Links;463
20.5;18.5?Point & Click-Steuerung für Maus und Touch;464
21;19 Fehlersuche und Performance;468
21.1;19.1?Fehlersuche;468
21.1.1;19.1.1?Breakpoints;469
21.1.2;19.1.2?Variablen beobachten;470
21.1.3;19.1.3?Console Tab nutzen;470
21.1.4;19.1.4?GUI- und GUILayout nutzen;471
21.2;19.2?Performance;471
21.2.1;19.2.1?Rendering-Statistik;472
21.2.2;19.2.2?Batching-Verfahren;473
21.2.3;19.2.3?Analyse mit dem Profiler;475
21.2.4;19.2.4?Echtzeit-Analyse auf Endgeräten;476
21.2.4.1;19.2.4.1?Webplayer-Game remote analysieren;476
21.2.4.2;19.2.4.2?Android-Game remote analysieren;477
21.2.4.3;19.2.4.3?iOS-Game remote analysieren;477
22;20 Spiele erstellen und publizieren;478
22.1;20.1?Der Build-Prozess;478
22.1.1;20.1.1?Szenen des Spiels;479
22.1.2;20.1.2?Plattformen;480
22.1.3;20.1.3?Notwendige SDKs;480
22.1.4;20.1.4?Plattformspezifische Optionen;481
22.1.5;20.1.5?Developer Builds;481
22.1.5.1;20.1.5.1?Autoconnect Profiler;481
22.1.5.2;20.1.5.2?Script Debugging;481
22.2;20.2?Publizieren;482
22.2.1;20.2.1?App;483
22.2.2;20.2.2?Browser-Game;483
22.2.3;20.2.3?Desktop-Anwendung;484
23;21 Erstes Beispiel-Game: 2D-Touch-Game;486
23.1;21.1?Projekt und Szene;486
23.1.1;21.1.1?Die Kamera;488
23.1.2;21.1.2?Texturen importieren und Sprites definieren;488
23.2;21.2?Gespenster und Hintergrund;490
23.2.1;21.2.1?Gespenster animieren;493
23.2.2;21.2.2?Gespenster laufen lassen;497
23.2.3;21.2.3?Gespenster-Prefab erstellen;499
23.3;21.3?Der GameController;499
23.3.1;21.3.1?Der Spawner;500
23.3.2;21.3.2?Level-Anzeige;502
23.3.3;21.3.3?Der Input-Controller;503
23.3.4;21.3.4?Game Over-UI;505
23.3.5;21.3.5?Hintergrundmusik;511
23.4;21.4?Punkte zählen;512
23.5;21.5?Spielende;513
23.6;21.6?Spiel erstellen;514
24;22 Zweites Beispiel-Game: 3D Dungeon Crawler;516
24.1;22.1?Level-Design;517
24.1.1;22.1.1?Modellimport;518
24.1.1.1;22.1.1.1?Allgemeine Import Settings;518
24.1.1.2;22.1.1.2?bat_03 Import Settings;518
24.1.1.3;22.1.1.3?crate_01 Import Settings;519
24.1.1.4;22.1.1.4?stone_01 Import Settings;519
24.1.1.5;22.1.1.5?floor_01 Import Settings;519
24.1.2;22.1.2?Materials konfigurieren;519
24.1.3;22.1.3?Prefabs erstellen;520
24.1.3.1;22.1.3.1?Wall Prefab;520
24.1.3.2;22.1.3.2?Torch Prefab;520
24.1.3.3;22.1.3.3?Wall_Torch Prefab;521
24.1.3.4;22.1.3.4?Floor Prefab;521
24.1.3.5;22.1.3.5?Ceiling Prefab;522
24.1.4;22.1.4?Dungeon erstellen;522
24.1.4.1;22.1.4.1?Boden erstellen;522
24.1.4.2;22.1.4.2?Wände erstellen;523
24.1.4.3;22.1.4.3?Decke erstellen;524
24.1.4.4;22.1.4.4?Allgemeine Licht-Einstellungen;524
24.1.4.5;22.1.4.5?Fackelbeleuchtung;524
24.1.4.6;22.1.4.6?Akzent-Beleuchtung;526
24.1.5;22.1.5?Dekoration erstellen;527
24.1.5.1;22.1.5.1?Crate Prefab;527
24.1.5.2;22.1.5.2?Barrel Prefabs;527
24.2;22.2?Inventarsystem erstellen;528
24.2.1;22.2.1?Verwaltungslogik;528
24.2.1.1;22.2.1.1?InventoryItem.cs;532
24.2.1.2;22.2.1.2?CreateInventoryItem.cs;532
24.2.1.3;22.2.1.3?Inventory.cs;533
24.2.1.4;22.2.1.4?PickableItem.cs;535
24.2.2;22.2.2?Oberfläche des Inventarsystems;535
24.2.3;22.2.3?Inventar-Items;539
24.2.3.1;22.2.3.1?HoverEffects.cs;544
24.3;22.3?Game Controller;545
24.4;22.4?Spieler erstellen;546
24.4.1;22.4.1?Lebensverwaltung;547
24.4.1.1;22.4.1.1?LifePointController.cs;555
24.4.1.2;22.4.1.2?HealthController.cs;556
24.4.1.3;22.4.1.3?PlayerHealth.cs;556
24.4.2;22.4.2?Spielersteuerung;558
24.4.2.1;22.4.2.1?PlayerController.cs;563
24.4.2.2;22.4.2.2?Footsteps.cs;564
24.4.2.3;22.4.2.3?Shooting.cs;565
24.4.3;22.4.3?Wurfstein entwickeln;566
24.4.3.1;22.4.3.1?StoneBehaviour.cs;569
24.4.3.2;22.4.3.2?Zerberstenden Stein konfigurieren;570
24.4.4;22.4.4?Lautstärke steuern;572
24.5;22.5?Quest erstellen;573
24.5.1;22.5.1?Erfahrungspunkte verwalten;573
24.5.1.1;22.5.1.1?EPController.cs;574
24.5.2;22.5.2?Questgeber erstellen;575
24.5.2.1;22.5.2.1?WaterQuest.cs;580
24.5.2.2;22.5.2.2?WaterdropSound.cs;582
24.5.2.3;22.5.2.3?InGameMenu.cs;582
24.5.3;22.5.3?Sub-Quest erstellen;583
24.5.3.1;22.5.3.1?AnimateDoor.cs;587
24.6;22.6?Gegner erstellen;589
24.6.1;22.6.1?Model-, Rig- und Animationsimport;589
24.6.2;22.6.2?Komponenten und Prefab konfigurieren;590
24.6.3;22.6.3?Animator Controller erstellen;592
24.6.4;22.6.4?NavMesh erstellen;594
24.6.5;22.6.5?Umgebung und Feinde erkennen;595
24.6.5.1;22.6.5.1?EnemySonar.cs;596
24.6.6;22.6.6?Gesundheitszustand verwalten;597
24.6.6.1;22.6.6.1?EnemyHealth.cs;600
24.6.7;22.6.7?Künstliche Intelligenz entwickeln;601
24.6.7.1;22.6.7.1?EnemyAI.cs;607
24.7;22.7?Eröffnungsszene;610
24.7.1;22.7.1?Szene erstellen;610
24.7.2;22.7.2?Startmenü-Logik erstellen;611
24.7.2.1;22.7.2.1?MainMenu.cs;612
24.7.3;22.7.3?Menü-GUI erstellen;613
24.8;22.8?Web-Player-Anpassungen;615
24.8.1;22.8.1?Web-Player-Template ändern;615
24.8.2;22.8.2?Quit-Methode im Web-Player abfangen;615
24.9;22.9?Finale Einstellungen;616
24.10;22.10?So könnte es weitergehen;619
25;23 Der Produktionsprozess in der Spieleentwicklung;620
25.1;23.1?Die Produktionsphasen;620
25.1.1;23.1.1?Ideen- und Konzeptionsphase;621
25.1.2;23.1.2?Planungsphase;621
25.1.3;23.1.3?Entwicklungsphase;621
25.1.4;23.1.4?Testphase;622
25.1.5;23.1.5?Veröffentlichung und Postproduktion;622
25.2;23.2?Das Game-Design-Dokument;622
26;24 Schlusswort;624
27;Index;626