Carsten Seifert
Spiele entwickeln mit Unity 5
2D- und 3D-Games mit Unity und C# für Desktop, Web & Mobile
Inhalt
6
Vorwort
24
1 Einleitung
26
1.1?Multiplattform-Publishing
26
1.2?Das kann Unity (nicht)
27
1.3?Lizenzmodelle
27
1.4?Aufbau und Ziel des Buches
28
1.5?Weiterentwicklung von Unity
29
1.6?Online-Zusatzmaterial
29
2 Grundlagen
32
2.1?Installation
32
2.2?Oberfläche
32
2.2.1?Hauptmenü
34
2.2.2?Scene View
35
2.2.2.1?Navigieren in der Scene View
36
2.2.2.2?Scene Gizmo
36
2.2.3?Game View
37
2.2.4?Toolbar
38
2.2.5?Hierarchy
40
2.2.5.1?Parenting
41
2.2.6?Inspector
42
2.2.6.1?Kopfinformationen im Inspector
43
2.2.6.2?Variablen Werte zuweisen
43
2.2.6.3?Komponenten-Menüs
44
2.2.6.4?Preview-Fenster
45
2.2.7?Project Browser
45
2.2.7.1?Assets suchen und finden
46
2.2.7.2?Assets importieren
47
2.2.8?Console
47
2.3?Das Unity-Projekt
48
2.3.1?Neues Projekt anlegen
48
2.3.2?Bestehendes Projekt öffnen
49
2.3.2.1?Ältere Projekte öffnen
50
2.3.3?Projektdateien
50
2.3.4?Szene
50
2.3.5?Game Objects
51
2.3.6?Components
52
2.3.7?Tags
53
2.3.8?Layer
54
2.3.9?Assets
54
2.3.9.1?UnityPackage
55
2.3.9.2?Asset Import
55
2.3.9.3?Asset Export
56
2.3.9.4?Asset Store
56
2.3.10?Frames
57
2.4?Das erste Übungsprojekt
58
3 C# und Unity
60
3.1?Die Sprache C#
60
3.2?Syntax
61
3.3?Kommentare
62
3.4?Variablen
62
3.4.1?Namenskonventionen
62
3.4.2?Datentypen
63
3.4.3?Schlüsselwort var
64
3.4.4?Datenfelder/Array
64
3.4.4.1?Arrays erstellen
64
3.4.4.2?Zugriff auf ein Array-Element
65
3.4.4.3?Anzahl aller Array-Items ermitteln
65
3.4.4.4?Mehrdimensionale Arrays
65
3.5?Konstanten
66
3.5.1?Enumeration
66
3.6?Typkonvertierung
67
3.7?Rechnen
68
3.8?Verzweigungen
69
3.8.1?if-Anweisungen
69
3.8.1.1?Komplexere if-Anweisungen
70
3.8.2?switch-Anweisung
71
3.9?Schleifen
72
3.9.1?for-Schleife
72
3.9.1.1?Negative Schrittweite
73
3.9.1.2?break
73
3.9.2?Foreach-Schleife
73
3.9.3?while-Schleife
74
3.9.4?do-Schleife
74
3.10?Klassen
75
3.10.1?Komponenten per Code zuweisen
75
3.10.2?Instanziierung von Nichtkomponenten
76
3.10.3?Werttypen und Referenztypen
78
3.10.4?Überladene Methoden
78
3.11?Der Konstruktor
79
3.11.1?Konstruktoren in Unity
79
3.12?Lokale und globale Variablen
80
3.12.1?Namensverwechslung verhindern mit this
80
3.13?Zugriff und Sichtbarkeit
80
3.14?Statische Klassen und Klassenmember
81
3.15?Parametermodifizierer out/ref
82
3.16?Array-Übergabe mit params
83
3.17?Eigenschaften und Eigenschaftsmethoden
84
3.18?Vererbung
85
3.18.1?Basisklasse und abgeleitete Klassen
85
3.18.2?Vererbung und die Sichtbarkeit
86
3.18.3?Geerbte Methode überschreiben
86
3.18.4?Zugriff auf die Basisklasse
87
3.18.5?Klassen versiegeln
87
3.19?Polymorphie
88
3.20?Schnittstellen
88
3.20.1?Schnittstelle definieren
88
3.20.2?Schnittstellen implementieren
89
3.20.2.1?Unterstützung durch MonoDevelop
90
3.20.3?Zugriff über eine Schnittstellen
90
3.21?Namespaces
91
3.21.1?Eigene Namespaces definieren
91
3.22?Generische Klassen und Methoden
92
3.22.1?List
93
3.22.2?Dictionary
94
4 Skript-Programmierung
96
4.1?MonoDevelop
96
4.1.1?Hilfe in MonoDevelop
97
4.1.2?Syntaxfehler
97
4.2?Nutzbare Programmiersprachen
98
4.2.1?Warum C#?
98
4.3?Unitys Vererbungsstruktur
99
4.3.1?Object
99
4.3.2?GameObject
100
4.3.3?ScriptableObject
100
4.3.4?Component
100
4.3.5?Transform
101
4.3.6?Behaviour
101
4.3.7?MonoBehaviour
101
4.4?Skripte erstellen
101
4.4.1?Skripte umbenennen
102
4.5?Das Skript-Grundgerüst
102
4.6?Unitys Event-Methoden
103
4.6.1?Update
103
4.6.2?FixedUpdate
104
4.6.3?Awake
105
4.6.4?Start
105
4.6.5?OnGUI
105
4.6.6?LateUpdate
106
4.7?Komponentenprogrammierung
106
4.7.1?Auf GameObjects zugreifen
107
4.7.1.1?FindWithTag
107
4.7.1.2?FindGameObjectsWithTag
108
4.7.1.3?Find
108
4.7.2?GameObjects aktivieren und deaktivieren
108
4.7.3?GameObjects zerstören
109
4.7.4?GameObjects erstellen
109
4.7.5?Auf Components zugreifen
109
4.7.5.1?GetComponent
110
4.7.5.2?SendMessage
110
4.7.5.3?Direktzugriff
111
4.7.6?Components hinzufügen
111
4.7.7?Components entfernen
112
4.7.8?Components aktivieren und deaktivieren
112
4.7.9?Attribute
112
4.8?Zufallswerte
114
4.9?Parallel Code ausführen
115
4.9.1?WaitForSeconds
116
4.10?Verzögerte und wiederholende Funktionsaufrufe mit Invoke
116
4.10.1?Invoke
116
4.10.2?InvokeRepeating, IsInvoking und CancelInvoke
117
4.11?Daten speichern und laden
118
4.11.1?PlayerPrefs-Voreinstellungen
118
4.11.2?Daten speichern
119
4.11.3?Daten laden
119
4.11.4?Key überprüfen
120
4.11.5?Löschen
120
4.11.6?Save
120
4.12?Szeneübergreifende Daten
121
4.12.1?Werteübergabe mit PlayerPrefs
121
4.12.1.1?Startmenüs zur Initialisierung nutzen
122
4.12.2?Zerstörung unterbinden
123
4.12.2.1?DontDestroyOnLoad als Singleton
123
4.13?Debug-Klasse
124
4.14?Kompilierungsreihenfolge
125
4.14.1?Programmsprachen mischen und der sprachübergreifende Zugriff
125
4.15?Ausführungsreihenfolge
126
4.16?Plattformabhängig Code kompilieren
126
4.17?Eigene Assets mit ScriptableObject
127
4.17.1?Neue ScriptableObject-Subklasse erstellen
128
4.17.2?Instanzen eines ScriptableObjects erstellen
129
4.17.2.1?Eigener Menü-Knopf zum Erstellen von Assets
129
5 Objekte in der zweiten und dritten Dimension
132
5.1?Das 3D-Koordinatensystem
132
5.2?Vektoren
133
5.2.1?Ort, Winkel und Länge
134
5.2.2?Normalisieren
135
5.3?Das Mesh
136
5.3.1?Normalenvektor
137
5.3.2?MeshFilter und MeshRenderer
137
5.4?Transform
139
5.4.1?Kontextmenü der Transform-Komponente
139
5.4.2?Objekthierarchien
140
5.4.3?Scripting mit Transform
141
5.4.4?Quaternion
141
5.5?Shader und Materials
142
5.5.1?Der Standard-Shader
143
5.5.1.1?Rendering Mode
145
5.5.1.2?Main Maps
146
5.5.1.3?Secondary Maps
152
5.5.1.4?Metallic vs. Specular
154
5.5.2?Texturen
158
5.5.2.1?Import von Texturen
159
5.5.2.2?Normalmaps erstellen
160
5.5.3?UV Mapping
161
5.6?3D-Modelle einer Szene zufügen
163
5.6.1?Primitives
163
5.6.2?3D-Modelle importieren
164
5.6.2.1?Model Import Settings
165
5.6.3?In Unity modellieren
165
5.6.4?Prozedurale Mesh-Generierung
166
5.6.5?Level Of Detail
166
5.6.5.1?LODGroups
167
5.6.5.2?LOD-Qualitätseinstellungen
168
5.7?2D in Unity
168
5.7.1?Sprites
169
5.7.1.1?Sprite Editor
171
5.7.1.2?Sprite Packer
172
5.7.2?SpriteRenderer
174
5.7.2.1?Darstellungsreihenfolgen von Sprites
175
5.7.2.2?Sprite-Shader
176
5.7.3?Parallex Scrolling
177
6 Kameras, die Augen des Spielers
180
6.1?Die Kamera
180
6.1.1?Komponenten eines Kamera-Objektes
182
6.1.2?HDR – High Dynamic Range-Rendering
182
6.1.2.1?Rückwandeln mit Tonemapping
183
6.1.2.2?Abarbeitungsreihenfolge festlegen
184
6.1.3?Linearer- und Gamma-Farbraum
185
6.1.3.1?Die Gamma-Korrektur
185
6.1.3.2?Linear-Space und Gamma-Space in Unity
186
6.2?Kamerasteuerung
188
6.2.1?Statische Kamera
188
6.2.2?Parenting-Kamera
188
6.2.3?Kamera-Skripte
189
6.2.3.1?Kamera-Skripte programmieren
189
6.3?ScreenPointToRay
191
6.4?Mehrere Kameras
191
6.4.1?Kamerawechsel
191
6.4.2?Split-Screen
193
6.4.3?Einfache Minimap
194
6.4.4?Render Texture
195
6.5?Image Effects
197
6.5.1?Beispiel: Haus bei Nacht
197
6.6?Skybox
199
6.6.1?Mehrere Skyboxen gleichzeitig einsetzen
200
6.6.2?Skybox selber erstellen
201
6.7?Occlusion Culling
202
6.7.1?Occluder Static und Occludee Static
203
6.7.2?Occlusion Culling erstellen
204
7 Licht und Schatten
206
7.1?Ambient Light
206
7.2?Lichtarten
207
7.2.1?Directional Light
208
7.2.2?Point Light
209
7.2.3?Spot Light
209
7.2.4?Area Light
210
7.3?Schatten
211
7.3.1?Einfluss des MeshRenderers auf Schatten
212
7.4?Light Cookies
213
7.4.1?Import Settings eines Light Cookies
213
7.4.2?Light Cookies und Point Lights
214
7.5?Light Halos
215
7.5.1?Unabhängige Halos
216
7.6?Lens Flares
216
7.6.1?Eigene Lens Flares
217
7.7?Projector
217
7.7.1?Standard Projectors
217
7.8?Lightmapping
219
7.8.1?Light Probes
221
7.9?Rendering Paths
223
7.9.1?Forward Rendering
224
7.9.2?Vertex Lit
225
7.9.3?Deferred Lighting
226
7.10?Global Illumination
227
7.10.1?Baked GI
227
7.10.2?Precomputed Realtime GI
228
7.11?Reflexionen (Spiegelungen)
228
7.11.1?Reflection Probes
229
7.12?Qualitätseinstellungen
232
7.12.1?Quality Settings
232
7.12.2?Qualitätsstufen per Code festlegen
232
8 Physik in Unity
234
8.1?Physikberechnung
234
8.2?Rigidbodies
235
8.2.1?Rigidbodies kennenlernen
236
8.2.2?Masseschwerpunkt
237
8.2.3?Kräfte und Drehmomente zufügen
238
8.2.3.1?AddForce-Methode
238
8.2.3.2?AddTorque-Methode
239
8.2.3.3?ConstantForce-Komponente
241
8.3?Kollisionen
241
8.3.1?Collider
241
8.3.1.1?Mesh Collider
242
8.3.1.2?Collider modifizieren
243
8.3.1.3?OnCollision-Methoden
244
8.3.2?Trigger
245
8.3.3?Static Collider
246
8.3.4?Kollisionen mit schnellen Objekten
246
8.3.5?Terrain Collider
248
8.3.6?Layer-basierende Kollisionserkennung
248
8.3.7?Mit Layer-Masken arbeiten
248
8.4?Wheel Collider
250
8.4.1?Wheel Friction Curve
251
8.4.2?Entwicklung einer Fahrzeugsteuerung
253
8.4.2.1?CarController.cs
258
8.4.3?Autokonfiguration
260
8.4.4?Fahrzeugstabilität
262
8.5?Physic Materials
263
8.6?Joints
264
8.6.1?Fixed Joint
264
8.6.2?Spring Joint
264
8.6.3?Hinge Joint
264
8.7?Raycasting
265
8.8?Character Controller
266
8.8.1?SimpleMove
267
8.8.2?Move
268
8.8.3?Kräfte zufügen
269
8.8.4?Einfacher First Person Controller
270
8.9?2D-Physik
272
8.9.1?OnCollision2D- und OnTrigger2D-Methoden
273
8.9.2?2D Physic Effectors
275
9 Maus, Tastatur, Touch
276
9.1?Virtuelle Achsen und Tasten
276
9.1.1?Der Input-Manager
276
9.1.2?Virtuelle Achsen
278
9.1.3?Virtuelle Tasten
278
9.1.4?Steuern mit Mauseingaben
279
9.1.5?Joystick-Inputs
279
9.1.6?Anlegen neuer Inputs
280
9.2?Achsen- und Tasteneingaben auswerten
280
9.2.1?GetAxis
280
9.2.2?GetButton
281
9.3?Tastatureingaben auswerten
282
9.3.1?GetKey
282
9.3.2?anyKey
282
9.4?Mauseingaben auswerten
283
9.4.1?GetMouseButton
283
9.4.2?mousePosition
284
9.4.3?Mauszeiger ändern
285
9.5?Touch-Eingaben auswerten
286
9.5.1?Der Touch-Typ
286
9.5.2?Input.touches
287
9.5.3?TouchCount
287
9.5.4?GetTouch
288
9.5.5?CrossPlatformInput
288
9.6?Beschleunigungssensor auswerten
290
9.6.1?Input.acceleration
290
9.6.2?Tiefpass-Filter
291
9.7?Steuerungen bei Mehrspieler-Games
292
9.7.1?Split-Screen-Steuerung
292
9.7.2?Netzwerkspiele
293
10 Audio
294
10.1?AudioListener
294
10.2?AudioSource
295
10.2.1?Durch Mauern hören verhindern
297
10.2.2?Sound starten und stoppen
299
10.2.3?Temporäre AudioSource
300
10.3?AudioClip
301
10.3.1?Länge ermitteln
301
10.4?Reverb Zone
301
10.5?Filter
303
10.6?Audio Mixer
303
10.6.1?Das Audio Mixer-Fenster
303
10.6.1.1?Die Audio-Steuerungseinheit
305
10.6.2?Audiosignalwege
307
10.6.2.1?Send & Receive
308
10.6.2.2?Duck Volume
309
10.6.3?Mit Snapshots arbeiten
311
10.6.4?Views erstellen
312
11 Partikeleffekte mit Shuriken
314
11.1?Editor-Fenster
315
11.2?Particle Effect Control
316
11.3?Numerische Parametervarianten
316
11.4?Farbparameter-Varianten
317
11.5?Default-Modul
317
11.6?Effekt-Module
318
11.6.1?Emission
319
11.6.2?Shape
319
11.6.2.1?Sphere
319
11.6.2.2?HemiSphere
319
11.6.2.3?Cone
319
11.6.2.4?Box
320
11.6.2.5?Mesh
320
11.6.3?Velocity over Lifetime
320
11.6.4?Limit Velocity over Lifetime
321
11.6.5?Force over Lifetime
321
11.6.6?Color over Lifetime
321
11.6.7?Color by Speed
321
11.6.8?Size over Lifetime
322
11.6.9?Size by Speed
322
11.6.10?Rotation over Lifetime
322
11.6.11?Rotation by Speed
322
11.6.12?External Forces
322
11.6.13?Collision
323
11.6.13.1?Planes
323
11.6.13.2?World
324
11.6.14?Sub Emitter
324
11.6.15?Texture-Sheet-Animation
324
11.6.16?Renderer
325
11.6.16.1?Billboard
326
11.6.16.2?Stretched Billboard
326
11.6.16.3?Horizontal Billboard
326
11.6.16.4?Vertical Billboard
326
11.6.16.5?Mesh
327
11.7?Partikelemission starten, stoppen und unterbrechen
327
11.7.1?Play
327
11.7.2?Stop
328
11.7.3?Pause
328
11.7.4?enableEmission
328
11.8?OnParticleCollision
328
11.8.1?GetCollisionEvents
329
11.9?Feuer erstellen
329
11.9.1?Materials erstellen
330
11.9.2?Feuer-Partikelsystem
331
11.9.3?Rauch-Partikelsystem
334
11.10?Wassertropfen erstellen
337
11.10.1?Tropfen-Material erstellen
337
11.10.2?Wassertropfen-Partikelsystem
338
11.10.3?Kollisionspartikelsystem
340
11.10.4?Kollisionssound
342
12 Landschaften gestalten
344
12.1?Was Terrains können und wo die Grenzen liegen
345
12.2?Terrainhöhe verändern
345
12.2.1?Pinsel
346
12.2.2?Oberflächen anheben und senken
346
12.2.3?Plateaus und Schluchten erstellen
347
12.2.4?Oberflächen weicher machen
348
12.2.5?Heightmaps
348
12.2.5.1?Reale Landschaften als Vorlagen nutzen
349
12.3?Terrain texturieren
350
12.3.1?Textur-Pinsel
351
12.3.2?Texturen verwalten
351
12.4?Bäume und Sträucher
353
12.4.1?Bedienung des Place Tree-Tools
353
12.4.2?Wälder erstellen
354
12.4.3?Mit Bäumen kollidieren
354
12.5?Gräser und Details hinzufügen
355
12.5.1?Detail-Meshs
355
12.5.2?Gräser
356
12.5.3?Quelldaten nachladen
357
12.6?Terrain-Einstellungen
357
12.6.1?Base Terrain
358
12.6.2?Resolution
358
12.6.3?Tree & Details Objects
359
12.6.4?Wind Settings
359
12.6.5?Zur Laufzeit Terrain-Eigenschaften verändern
360
12.7?Der Weg zum perfekten Terrain
361
12.8?Gewässer
362
13 Wind Zones
364
13.1?Spherical vs. Directional
365
13.2?Wind Zone – Eigenschaften
366
13.3?Frische Brise
367
13.4?Turbine
367
14 GUI
368
14.1?Das UI-System uGUI
369
14.1.1?Canvas
369
14.1.1.1?Render Modes
370
14.1.1.2?Canvas Scaler
372
14.1.2?RectTransform
373
14.1.2.1?Anchors
375
14.1.3?UI-Sprite Import
377
14.1.4?Grafische Controls
378
14.1.4.1?Text
378
14.1.4.2?Image
379
14.1.4.3?Raw Image
380
14.1.4.4?Panel
380
14.1.4.5?Effects
380
14.1.5?Interaktive Controls
381
14.1.5.1?Button
384
14.1.5.2?InputField
385
14.1.5.3?Toggle und Toggle Group
385
14.1.5.4?Slider
386
14.1.5.5?Scrollbar
387
14.1.6?Controls designen
387
14.1.7?Animationen in uGUI
388
14.1.8?Event Trigger
389
14.2?Screen-Klasse
390
14.2.1?Schriftgröße dem Bildschirm anpassen
391
14.3?OnGUI-Programmierung
391
14.3.1?GUI
392
14.3.1.1?Label
392
14.3.1.2?Button und RepeatButton
393
14.3.1.3?TextField und TextArea
393
14.3.1.4?Subfenster
394
14.3.2?GUILayout
395
14.3.2.1?Ausrichtung festlegen
395
14.3.3?GUIStyle und GUISkin
396
15 Prefabs
398
15.1?Prefabs erstellen und nutzen
398
15.2?Prefab-Instanzen erzeugen
398
15.2.1?Instanzen per Code erstellen
399
15.2.2?Instanzen weiter bearbeiten
399
15.3?Prefabs ersetzen und zurücksetzen
400
16 Internet und Datenbanken
402
16.1?Die WWW-Klasse
402
16.1.1?Rückgabewert-Formate
403
16.1.2?Parameter übergeben
404
16.1.2.1?WWWForm
404
16.2?Datenbank-Kommunikation
405
16.2.1?Daten in einer Datenbank speichern
405
16.2.2?Daten von einer Datenbank abfragen
406
16.2.3?Rückgabewerte parsen
408
16.2.4?Datenhaltung in eigenen Datentypen
408
16.2.5?HighscoreCommunication.cs
410
16.2.6?Datenbankverbindung in PHP
412
17 Animationen
414
17.1?Allgemeiner Animation-Workflow
415
17.2?Animationen erstellen
415
17.2.1?Animation View
416
17.2.2?Curves vs. Dope Sheet
417
17.2.3?Animationsaufnahme
417
17.2.3.1?Ansicht im Animation-Fenster anpassen
418
17.2.3.2?Sprite-Animationen
418
17.2.3.3?Root Motion-Kurven erstellen
421
17.2.4?Beispiel Fallgatter-Animation
422
17.3?Animationen importieren
423
17.3.1?Rig
424
17.3.1.1?Generic
424
17.3.1.2?Humanoid
424
17.3.2?Animationen
426
17.3.2.1?Animationen aufteilen
426
17.3.2.2?Importierte Animation-Clips bearbeiten
427
17.3.2.3?Mask
429
17.3.2.4?Events
429
17.4?Animationen einbinden
429
17.4.1?Animator Controller
429
17.4.1.1?Animation States erstellen
430
17.4.1.2?Transitions – Animation States wechseln
431
17.4.1.3?Any State nutzen
433
17.4.1.4?Blend Trees
433
17.4.1.5?Layer und Avatar Masks
434
17.4.1.6?Sub-State Machines
436
17.4.1.7?State Machine Behaviours
441
17.4.2?Animator-Komponente
445
17.4.3?Beispiel Fallgatter: Animator Controller
446
17.5?Controller-Skripte
448
17.5.1?Parameter des Animator Controllers setzen
448
17.5.1.1?Mit Hash-Werten arbeiten
449
17.5.2?Animation States abfragen
449
17.5.3?Beispiel Fallgatter Controller-Skript
450
17.6?Animation Events
452
18 Künstliche Intelligenz
454
18.1?NavMeshAgent
455
18.1.1?Eigenschaften der Navigationskomponente
456
18.1.2?Zielpunkt zuweisen
456
18.1.3?Pfadsuche unterbrechen und fortsetzen
457
18.2?NavigationMesh
457
18.2.1?Object Tab
459
18.2.2?Bake Tab
459
18.2.3?Areas Tab
460
18.3?NavMeshObstacle
461
18.4?Off-Mesh Link
462
18.4.1?Automatische Off-Mesh Links
462
18.4.2?Manuelle Off-Mesh Links
463
18.5?Point & Click-Steuerung für Maus und Touch
464
19 Fehlersuche und Performance
468
19.1?Fehlersuche
468
19.1.1?Breakpoints
469
19.1.2?Variablen beobachten
470
19.1.3?Console Tab nutzen
470
19.1.4?GUI- und GUILayout nutzen
471
19.2?Performance
471
19.2.1?Rendering-Statistik
472
19.2.2?Batching-Verfahren
473
19.2.3?Analyse mit dem Profiler
475
19.2.4?Echtzeit-Analyse auf Endgeräten
476
19.2.4.1?Webplayer-Game remote analysieren
476
19.2.4.2?Android-Game remote analysieren
477
19.2.4.3?iOS-Game remote analysieren
477
20 Spiele erstellen und publizieren
478
20.1?Der Build-Prozess
478
20.1.1?Szenen des Spiels
479
20.1.2?Plattformen
480
20.1.3?Notwendige SDKs
480
20.1.4?Plattformspezifische Optionen
481
20.1.5?Developer Builds
481
20.1.5.1?Autoconnect Profiler
481
20.1.5.2?Script Debugging
481
20.2?Publizieren
482
20.2.1?App
483
20.2.2?Browser-Game
483
20.2.3?Desktop-Anwendung
484
21 Erstes Beispiel-Game: 2D-Touch-Game
486
21.1?Projekt und Szene
486
21.1.1?Die Kamera
488
21.1.2?Texturen importieren und Sprites definieren
488
21.2?Gespenster und Hintergrund
490
21.2.1?Gespenster animieren
493
21.2.2?Gespenster laufen lassen
497
21.2.3?Gespenster-Prefab erstellen
499
21.3?Der GameController
499
21.3.1?Der Spawner
500
21.3.2?Level-Anzeige
502
21.3.3?Der Input-Controller
503
21.3.4?Game Over-UI
505
21.3.5?Hintergrundmusik
511
21.4?Punkte zählen
512
21.5?Spielende
513
21.6?Spiel erstellen
514
22 Zweites Beispiel-Game: 3D Dungeon Crawler
516
22.1?Level-Design
517
22.1.1?Modellimport
518
22.1.1.1?Allgemeine Import Settings
518
22.1.1.2?bat_03 Import Settings
518
22.1.1.3?crate_01 Import Settings
519
22.1.1.4?stone_01 Import Settings
519
22.1.1.5?floor_01 Import Settings
519
22.1.2?Materials konfigurieren
519
22.1.3?Prefabs erstellen
520
22.1.3.1?Wall Prefab
520
22.1.3.2?Torch Prefab
520
22.1.3.3?Wall_Torch Prefab
521
22.1.3.4?Floor Prefab
521
22.1.3.5?Ceiling Prefab
522
22.1.4?Dungeon erstellen
522
22.1.4.1?Boden erstellen
522
22.1.4.2?Wände erstellen
523
22.1.4.3?Decke erstellen
524
22.1.4.4?Allgemeine Licht-Einstellungen
524
22.1.4.5?Fackelbeleuchtung
524
22.1.4.6?Akzent-Beleuchtung
526
22.1.5?Dekoration erstellen
527
22.1.5.1?Crate Prefab
527
22.1.5.2?Barrel Prefabs
527
22.2?Inventarsystem erstellen
528
22.2.1?Verwaltungslogik
528
22.2.1.1?InventoryItem.cs
532
22.2.1.2?CreateInventoryItem.cs
532
22.2.1.3?Inventory.cs
533
22.2.1.4?PickableItem.cs
535
22.2.2?Oberfläche des Inventarsystems
535
22.2.3?Inventar-Items
539
22.2.3.1?HoverEffects.cs
544
22.3?Game Controller
545
22.4?Spieler erstellen
546
22.4.1?Lebensverwaltung
547
22.4.1.1?LifePointController.cs
555
22.4.1.2?HealthController.cs
556
22.4.1.3?PlayerHealth.cs
556
22.4.2?Spielersteuerung
558
22.4.2.1?PlayerController.cs
563
22.4.2.2?Footsteps.cs
564
22.4.2.3?Shooting.cs
565
22.4.3?Wurfstein entwickeln
566
22.4.3.1?StoneBehaviour.cs
569
22.4.3.2?Zerberstenden Stein konfigurieren
570
22.4.4?Lautstärke steuern
572
22.5?Quest erstellen
573
22.5.1?Erfahrungspunkte verwalten
573
22.5.1.1?EPController.cs
574
22.5.2?Questgeber erstellen
575
22.5.2.1?WaterQuest.cs
580
22.5.2.2?WaterdropSound.cs
582
22.5.2.3?InGameMenu.cs
582
22.5.3?Sub-Quest erstellen
583
22.5.3.1?AnimateDoor.cs
587
22.6?Gegner erstellen
589
22.6.1?Model-, Rig- und Animationsimport
589
22.6.2?Komponenten und Prefab konfigurieren
590
22.6.3?Animator Controller erstellen
592
22.6.4?NavMesh erstellen
594
22.6.5?Umgebung und Feinde erkennen
595
22.6.5.1?EnemySonar.cs
596
22.6.6?Gesundheitszustand verwalten
597
22.6.6.1?EnemyHealth.cs
600
22.6.7?Künstliche Intelligenz entwickeln
601
22.6.7.1?EnemyAI.cs
607
22.7?Eröffnungsszene
610
22.7.1?Szene erstellen
610
22.7.2?Startmenü-Logik erstellen
611
22.7.2.1?MainMenu.cs
612
22.7.3?Menü-GUI erstellen
613
22.8?Web-Player-Anpassungen
615
22.8.1?Web-Player-Template ändern
615
22.8.2?Quit-Methode im Web-Player abfangen
615
22.9?Finale Einstellungen
616
22.10?So könnte es weitergehen
619
23 Der Produktionsprozess in der Spieleentwicklung
620
23.1?Die Produktionsphasen
620
23.1.1?Ideen- und Konzeptionsphase
621
23.1.2?Planungsphase
621
23.1.3?Entwicklungsphase
621
23.1.4?Testphase
622
23.1.5?Veröffentlichung und Postproduktion
622
23.2?Das Game-Design-Dokument
622
24 Schlusswort
624
Index
626
© 2009-2024 ciando GmbH