Seifert | Spiele entwickeln mit Unity 5 | E-Book | sack.de
E-Book

E-Book, Deutsch, 642 Seiten

Seifert Spiele entwickeln mit Unity 5

2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile
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

Seifert Spiele entwickeln mit Unity 5 jetzt bestellen!

Autoren/Hrsg.


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 Eigenschafts­methoden;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


Dipl.-Ing (FH) Carsten Seifert ist Spiele- und Softwareentwickler, Blogger und YouTuber. Der Unity-Community ist er mit seinen Tutorials bestens bekannt. Besuchen Sie ihn auf seiner Webseite www.hummelwalker.de.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.