Daniel Korgel
Virtual Reality-Spiele entwickeln mit Unity®
Grundlagen, Beispielprojekte, Tipps & Tricks
Inhalt
7
Vorwort
17
1 Einleitung
19
1.1 Virtual Reality
20
1.2 Ziel des Buches
20
1.3 Unterstützte Virtual-Reality-Brillen
21
1.4 Unity
22
1.4.1 Welche Unity-Version benötige ich?
23
1.5 Was brauche ich?
24
1.6 Weiterentwicklung der Technik
25
1.7 Online-Zusatzmaterial
25
2 Einführung in Virtual Reality
27
2.1 Begriffserklärungen
27
2.2 Augmented Reality, Mixed Reality und Virtual Reality
29
2.3 Virtual Reality ist tot – lang lebe Virtual Reality
30
2.4 Unterstützte Virtual-Reality-Brillen
33
2.4.1 Oculus Rift
34
2.4.2 HTC Vive
35
2.4.3 Samsung GearVR
36
2.4.4 Google Cardboard (nur teilweise unterstützt)
37
2.4.5 Google Daydream
38
2.5 Andere VR-Brillen
39
2.5.1 Microsoft Mixed Reality
39
2.5.2 PlayStation VR
40
2.5.3 Razer OSVR
41
2.6 Spiele, Anwendungen, Demos und Erfahrungen
42
2.7 Seated, Standing & Room Scale
43
2.8 „Bekannte“ Probleme
44
2.8.1 Auflösung & Fliegengitter-Effekt
45
2.8.2 Hardwareanforderungen
45
2.8.3 Kurz- und Weitsichtigkeit
46
2.8.4 Simulator Sickness
46
3 Quickstart: 3D-Entwicklung mit Unity
49
3.1 Installation
49
3.1.1 Die Unity ID
51
3.1.2 Android SDK & Java Development Kit(GearVR, GoogleVR)
52
3.2 Der erste Start
56
3.3 Ein neues Projekt anlegen
57
3.4 Die Unity-Oberfläche
58
3.4.1 Drag & Drop
59
3.4.2 Project Browser
60
3.4.3 Console
61
3.4.4 Hierarchy
62
3.4.5 Scene View
64
3.4.6 Inspector
66
3.5 Scenes
72
3.5.1 Unity in der dritten Dimension
72
3.5.2 GameObjects
73
3.5.3 Prefabs
75
3.6 Die wichtigsten Components
76
3.6.1 Camera und Audio Listener
76
3.6.2 Lights
77
3.6.3 Mesh Filter und Mesh Renderer
78
3.6.4 Collider
79
3.6.5 Rigidbody
80
3.6.6 Audio Source
81
3.6.7 Scripts/Behaviours
82
3.7 Assets
82
3.7.1 Dateien importieren
85
3.7.2 Unity Packages
86
3.7.3 Asset Store
89
3.7.4 Import Settings
90
3.8 Projektvorbereitung (GearVR, GoogleVR)
90
3.8.1 Zielplattform zu Android wechseln
91
3.8.2 Externe Tools angeben (Android SDK, JDK)
92
3.9 Test Scene erstellen und starten
94
3.9.1 Rohbau für den Raum erstellen
96
3.9.2 Scene speichern
99
3.9.3 Licht anpassen
100
3.9.4 Collider hinzufügen
101
3.9.5 Möbelstücke einräumen
102
3.9.6 Bücher hinzufügen
105
3.9.7 Weitere Details
109
3.9.8 Lichter und Lichteinstellungen optimieren
110
3.9.9 Spieler positionieren
113
3.10 VR-Unterstützung aktivieren
114
3.10.1 Unitys VR-Unterstützung aktivieren
114
3.11 Player Settings anpassen (GearVR, GoogleVR)
115
3.12 Anti-Aliasing aktivieren
117
3.13 Die Scene in VR testen
118
3.13.1 Am PC in VR testen (Oculus Rift, SteamVR)
119
3.13.2 Auf dem Smartphone in VR testen (GearVR, GoogleVR)
120
3.14 So geht es weiter
129
4 Dos and Don’ts – Game-Design für Virtual Reality
131
4.1 Beispielprojekt
132
4.2 Immersion
132
4.2.1 Immersion brechen
136
4.3 Positional Tracking
136
4.3.1 Mobile VR-Brillen
138
4.4 Locomotion
139
4.4.1 Klassische Locomotion
139
4.4.2 Teleport Locomotion
142
4.4.3 Ohne künstliche Locomotion
143
4.4.4 Andere Eingabemethoden für das Laufen
146
4.5 Lebendige Spielwelt erschaffen
147
4.6 User Interface
151
4.6.1 Distanz und Größe
154
4.7 Aufmerksamkeit lenken
155
4.7.1 Objekte untersuchen
156
4.7.2 Ereignisse nicht verpassen
159
4.8 Uncanny Valley
160
4.8.1 Auswirkung für dich
163
4.9 Sound Design und Spatial Sound
164
4.9.1 Spatial Sound
164
4.9.2 Spatial-Audio-Engines
167
5 C#-Scripte für Unity programmieren
169
5.1 C#, .Net und Mono
170
5.2 Grundlagen
170
5.2.1 C#-Syntax
170
5.2.2 Kommentare
171
5.2.3 Variablen
172
5.2.4 Methoden
179
5.2.5 Klassen
182
5.2.6 Dynamische Datentypen
183
5.2.7 Statische Methoden und statische Variablen
185
5.2.8 Vererbung
186
5.2.9 Namespaces
189
5.2.10 Lebenszyklus von Variablen
190
5.2.11 Sichtbarkeiten
191
5.2.12 Ausnahmen ? „Exceptions“
192
5.3 Erster Test
193
5.3.1 Microsoft Visual Studio 2017
193
5.3.2 Script, Behaviour, Component und ihr Aufbau
197
5.3.3 Debug-Ausgaben in die Console
198
5.3.4 Eigenes Script testen
199
5.3.5 Notation von Methoden und Variablen in diesem Buch
201
5.4 Erweiterte Grundlagen
201
5.4.1 Bedingungen und Verzweigungen
201
5.4.2 Schleifen
204
5.4.3 Eigenschaften
209
5.4.4 Dynamische Listen
210
5.5 Unity-spezifische Grundlagen
214
5.5.1 Zufallswerte
214
5.5.2 Editor-Eigenschaften
215
5.5.3 MonoBehaviour Lebenszyklus-Methoden
218
5.5.4 MonoBehaviour-Event-Methoden
220
5.5.5 Auf GameObjects zugreifen
221
5.5.6 GameObjects via Code erstellen
224
5.5.7 GameObjects zerstören
225
5.5.8 Transforms: GameObjects bewegen
225
5.5.9 Auf andere Components zugreifen
227
5.5.10 Components zu GameObject hinzufügen
230
5.5.11 Components entfernen
231
5.5.12 Parallele Methoden mit Coroutines
231
5.5.13 Scripted-Event-Beispiel
232
5.5.14 Methoden verzögert aufrufen mit Invoke
233
5.6 Problemlösung
234
5.6.1 Wort im Code ist rot unterstrichen
234
5.6.2 Fehler in der Console im Editor
235
5.6.3 Fehler in der Console, während das Spiel läuft
235
5.6.4 „Can't add script“-Meldung oder Script ist nicht im „Add Component“-Menü vorhanden
236
5.6.5 Sonstige Fehler
237
6 Erweiterte Unity-Einführung
239
6.1 Licht, Schatten und Lightmapping
239
6.1.1 Global Illumination
240
6.1.2 Farbräume
250
6.1.3 Environment Light
251
6.1.4 Lichter in der Scene
252
6.1.5 Emissive Materials
258
6.1.6 Light Probes
258
6.1.7 Reflexionen
261
6.1.8 Lighting-Fenster
264
6.1.9 Light Explorer
266
6.2 Shader
267
6.2.1 Der Standard Shader
268
6.2.2 Mobile Shader
273
6.3 Audio
276
6.3.1 AudioSources
277
6.3.2 AudioSources via Script steuern
280
6.3.3 Temporäre AuidoSource via Script
282
6.3.4 Reverb Zones
282
6.3.5 Audio Mixer
283
6.4 Tastatur und Gamepad-Eingaben lesen
287
6.4.1 Der Input-Manager
288
6.4.2 Virtuelle Tasten und Achsen
288
6.4.3 Konfiguration einer Achse
289
6.4.4 Gamepad- und Tastatureingaben erfassen
291
6.5 Physik
293
6.5.1 Collider
293
6.5.2 Rigidbody
296
6.5.3 Kräfte und Beschleunigung
298
6.5.4 Physics Joints ? Verknüpfungen
299
6.5.5 Kollisionen und Trigger erkennen
303
6.5.6 Raycasts
309
6.5.7 Character Controller
310
6.6 Partikeleffekte
313
6.6.1 Partikelsysteme
314
6.6.2 Particle-Effect-Steuerung
315
6.6.3 Module des Particle Systems
316
6.6.4 Particle Effect Editor
323
6.6.5 Particle Systems via Script steuern
323
6.6.6 Standard-Partikeleffekte
324
6.7 Landschaften mit Terrains erstellen
324
6.8 Animation System
327
6.8.1 Animation Workflow
328
6.8.2 Humanoide Animationen und Avatare
330
6.8.3 Modelle & Animationen importieren
331
6.8.4 Animation Controller
335
6.9 Wegfindung
339
6.9.1 Wegfindungssystem einrichten
339
6.9.2 Grundlagen
341
6.9.3 NavMeshs berechnen
343
6.9.4 NavMeshs verbinden
344
6.9.5 Dynamische Hindernisse
344
6.9.6 NavMeshAgent erstellen
345
6.9.7 NavMeshAgent über Script steuern
345
6.9.8 Erweiterte Beispiele
346
6.10 Savegames ? Daten speichern und laden
347
6.11 Performance optimieren
348
6.11.1 Batching
348
6.11.2 Performance im Auge behalten
349
6.11.3 VR-Optimierungs-Checkliste und Grenzen
353
6.12 User Interface ? Quickstart
355
6.12.1 User Interface im World Space erstellen
355
6.12.2 User Interface in VR bedienen
360
7 Die Virtual-Reality-SDKs
363
7.1 Unitys-interne VR-Unterstützung
364
7.1.1 Unitys interne VR-Unterstützung aktivieren
364
7.1.2 Interne VR-Unterstützung in der Scripting-API
366
7.1.3 InputTracking
366
7.1.4 VRDevice
367
7.1.5 VRSettings
368
7.2 Oculus Integration for Unity (Rift und Gear)
370
7.2.1 Download und Import
370
7.2.2 Prefabs
372
7.2.3 Gamepad-, Headset- und Touch-Eingaben lesen
379
7.2.4 Haptisches Feedback
381
7.2.5 Oculus Avatar SDK
383
7.2.6 Mehr Infos und Hilfe
385
7.3 SteamVR (u.?a. HTC Vive)
386
7.3.1 Download und Import
387
7.3.2 Prefabs
389
7.3.3 Eingaben der Controller lesen
396
7.3.4 Haptisches Feedback
397
7.3.5 Interaktionsbeispiel aus The Lab (u.?a. Longbow, Teleport)
398
7.3.6 Mehr Infos und Hilfe
398
7.4 GoogleVR SDK
399
7.4.1 Download und Import
399
7.4.2 Prefabs
400
7.4.3 Eingaben des Daydream Controllers lesen
404
7.4.4 Erweiterte Editorfunktionen fürs Testen
405
8 Beispielprojekte ? Einleitung
409
9 Bow and Arrow Castle Defense – GoogleVR mit Controller
411
9.1 Der Start
412
9.2 Die Kernmechanik ? Bogenschießen
414
9.2.1 Scene vorbereiten
414
9.2.2 Einfaches Scene-Design
414
9.2.3 Spieler konfigurieren und Daydream Controller einbinden
417
9.2.4 Schusskraft für den Bogen
419
9.2.5 Ein Pfeil für den Bogen
421
9.2.6 Pfeile nachladen
424
9.2.7 Dynamische Schusskraft
426
9.2.8 Flugkurve Vorschau – Add-on
428
9.2.9 Schaden und zerstörbare Ziele
431
9.3 Game- & Level-Design
432
9.4 Game Manager
434
9.5 Gegner – Orks!
439
9.5.1 NavMesh erstellen
439
9.5.2 Ork-Animator Controller
439
9.5.3 Die künstliche Intelligenz
441
9.5.4 Der Ork
442
9.5.5 Prefab erstellen und platzieren
444
9.6 Abschluss
444
9.6.1 Umsetzung dieses Beispiels für andere VR-Brillen
445
10 Space Battle ? Oculus Rift & SteamVR
447
10.1 Der Start
448
10.1.1 Scene vorbereiten
449
10.2 Die Kernmechanik ? ein Raumschiff fliegen
452
10.2.1 Spieler-Raumschiff erstellen
453
10.2.2 Raumschiff-Steuerung
456
10.2.3 Starfield/Weltraumstaub
463
10.2.4 Schadenssystem & Plasmakanone
466
10.3 Feinde und Verbündete
474
10.3.1 KI-Raumschiff
474
10.3.2 Die künstliche Intelligenz
476
10.4 Abschluss
485
10.4.1 Umsetzung dieses Beispiels für andere VR-Brillen
486
11 Dungeon Crawler ? GearVR
487
11.1 Der Start
488
11.1.1 Osig und Unity2017.1.0f3-Patch einfügen
490
11.2 Einen Dungeon bauen
490
11.2.1 Die Bauteile
491
11.2.2 Level-Design
491
11.2.3 Audio: Environment-Loop
494
11.3 Occlusion Culling
494
11.4 Kernmechanik ? Laufen, Kämpfen, Interagieren
496
11.4.1 Spieler erstellen
497
11.4.2 Bewegungen entlang des Gitters
499
11.4.3 Interaktive und lebendige Objekte
502
11.4.4 Die Spielerfunktionen
504
11.4.5 Spielereingaben lesen
509
11.4.6 Player fertigstellen
512
11.5 Gegner: Goblins
513
11.5.1 Die künstliche Intelligenz
514
11.5.2 Das GameObject und Prefab
516
11.5.3 Bevölkerung des Dungeons mit Goblins
517
11.6 Pickups: Kristalle
518
11.7 Dungeon-Ausgang
520
11.8 Interaktive Hindernisse
522
11.8.1 Falle: Stacheln
522
11.8.2 Rätsel: Schalter und Tore
524
11.9 Abschluss
527
11.9.1 Umsetzung dieses Beispiels für andere VR-Brillen
528
12 Sci-Fi-Stealth-Shooter ? Oculus Rift mit Oculus Touch und SteamVR
529
12.1 Der Start
530
12.2 Trainings-Areal anlegen
532
12.3 Player-GameObject erstellen
534
12.3.1 Oculus SDK: Player-GameObject erstellen
534
12.3.2 SteamVR SDK: Player-GameObject erstellen
535
12.3.3 Character Controller
536
12.3.4 Locomotion – klassisch und teleportieren
539
12.3.5 Eingaben lesen und Methoden aufrufen
543
12.3.6 Nach Gegenständen greifen
548
12.4 Lebensenergie verwalten
558
12.4.1 Lebensenergie des Spielers und Game Over
559
12.5 Laserpistole
560
12.5.1 Das GameObject vorbereiten
560
12.5.2 Die Laserpistolen-Funktion
561
12.5.3 Der Laserstrahl
563
12.6 Roboter-Gegner
565
12.6.1 EnemyAi – wie funktioniert die KI?
565
12.6.2 Roboter-GameObject anlegen
566
12.6.3 Trigger Collider ignorieren
568
12.7 Level erstellen
569
12.7.1 Level-Ende
570
12.8 Abschluss
571
13 VR-Spiele teilen, präsentieren und Feedback erhalten
573
13.1 Spieleidee entwickeln
573
13.2 VR-Spiele Builds erstellen und teilen
574
13.3 Feedback erhalten und Spiel bewerben
576
13.3.1 Tipps für das Präsentieren von Virtual Reality
577
13.4 Spiel veröffentlichen
578
13.5 Kostenlose Assets
579
14 Schlusswort
581
Index
583
Leere Seite
2
© 2009-2024 ciando GmbH