Virtual Reality-Spiele entwickeln mit Unity® - Grundlagen, Beispielprojekte, Tipps & Tricks
von: Daniel Korgel
Carl Hanser Fachbuchverlag, 2017
ISBN: 9783446453722
Sprache: Deutsch
587 Seiten, Download: 34141 KB
Format: EPUB, PDF, auch als Online-Lesen
Mehr zum Inhalt
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 |