Spiele entwickeln mit Unity 5 (eBook)
642 Seiten
Carl Hanser Fachbuchverlag
978-3-446-44720-2 (ISBN)
- 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
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.
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.
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
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
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
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
Erscheint lt. Verlag | 21.7.2015 |
---|---|
Verlagsort | München |
Sprache | deutsch |
Themenwelt | Mathematik / Informatik ► Informatik ► Programmiersprachen / -werkzeuge |
Schlagworte | Animationen • cross-platform • Entwicklungsumgebungen • Physically Based Shading • Spieleentwicklung • Spiele programmieren mit Unity • Spieleprogrammierung • Unity 3D • Unity 5 |
ISBN-10 | 3-446-44720-2 / 3446447202 |
ISBN-13 | 978-3-446-44720-2 / 9783446447202 |
Informationen gemäß Produktsicherheitsverordnung (GPSR) | |
Haben Sie eine Frage zum Produkt? |
Größe: 33,2 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: PDF (Portable Document Format)
Mit einem festen Seitenlayout eignet sich die PDF besonders für Fachbücher mit Spalten, Tabellen und Abbildungen. Eine PDF kann auf fast allen Geräten angezeigt werden, ist aber für kleine Displays (Smartphone, eReader) nur eingeschränkt geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
Größe: 38,9 MB
DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasserzeichen und ist damit für Sie personalisiert. Bei einer missbräuchlichen Weitergabe des eBooks an Dritte ist eine Rückverfolgung an die Quelle möglich.
Dateiformat: EPUB (Electronic Publication)
EPUB ist ein offener Standard für eBooks und eignet sich besonders zur Darstellung von Belletristik und Sachbüchern. Der Fließtext wird dynamisch an die Display- und Schriftgröße angepasst. Auch für mobile Lesegeräte ist EPUB daher gut geeignet.
Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür die kostenlose Software Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür eine kostenlose App.
Geräteliste und zusätzliche Hinweise
Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.
Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.
aus dem Bereich