Update Drei gewinnt authored by Pascal Schroeter's avatar Pascal Schroeter
[Geführte Navigation](https://gitlab.reutlingen-university.de/neuewelt9/nw9/-/wikis/Gef%C3%BChrte-Navigation)
\ No newline at end of file
-> [Geführte Navigation](https://gitlab.reutlingen-university.de/neuewelt9/nw9/-/wikis/Gef%C3%BChrte-Navigation)
Drei gewinn basiert auf [Geführte Navigation](https://gitlab.reutlingen-university.de/neuewelt9/nw9/-/wikis/Gef%C3%BChrte-Navigation) und führt zu drei sehenswerte Räumlichkeiten in Gebäude 9. Dort angekommen ist die Aufgabe eine dort "versteckte" Zahl zu finden und zu notieren. Im Rahmen des Tages der offenen Tür, im Sommersemester 2022, an der Hochschule Reutlingen, war es das Ziel diese drei Zahlen zu notieren, um einen Preis zu gewinnen.
## Verwendetes Asset
In den Meetings wurde sich für ein Pinguin-Asset entschieden, um eine größtmögliche Akzeptanz zu erhalten und eine Verbindung zur Informatik zu haben (Stichwort: Linux, Tux). Nach dem Testen unterschiedlicher kostenfreier Assets haben wir uns für einen Voxel-Pinguin entschieden, da dieser eine korrekte Bewegungsanimation, einen ideale Form und einen hohen Akzeptanzfaktor aufwies.
![penguin](uploads/db145f62c47b2fca9a99550fa357b52a/penguin.PNG)
License agreement: Standard Unity Asset Store EULA
License type: Extension Asset
Quelle: <https://assetstore.unity.com/packages/3d/characters/animals/5-animated-voxel-animals-145754>
## Navigation
Um die Navigation zu starten, ist im Startmenü "Geführte Navigation" auszuwählen. Auf der nächsten Seite wird das "Gesuchte" (z. B. "Drucker") und anschließend das gewünschte Ziel ausgesucht. Zuletzt wird die Auswahl mit **Navigation starten** bestätigt und die Navigation beginnt.
![p3](uploads/ffdc5523a4055aa587d5a1d155c9e6b5/p3.PNG)
Die Räume sind in einer JSON Datei hinterlegt, welche abseits des Codes angepasst werden kann. Die Struktur ist in diesem Format aufgebaut:
```plaintext
{
"rooms": [
{
"name": "9-038",
"description": "Allg. Unterricht",
"type":"Vorlesungsräume"
},
{
"name": "9-Innenhof",
"description": "",
"type":"Sehenswürdigkeiten"
},
{
"name": "9-037",
"description": "Medienraum",
"type":"Labore"
},
...
}
```
Die Datei ist im Ordner **.\\Assets\\StreamingAssets** und heißt **nw9rooms.json**. Dateien die im Ordner StreamingAssets abgelegt werden, können auch nach dem Buildprozess im Programmordner unter StreamingAssets bearbeitet werden.
Sobald die Navigation gestartet wurde, startet der Spieler vor Gebäude 9 mit dem Pinguin und einem auf dem Bildschirm angezeigten Infotext, der dem Spieler darum bittet den Pinguin zu folgen.
![nav_go](uploads/7c4603420d7f35035ef48869ec4a2004/nav_go.PNG)
Wenn der Pinguin am gewünschten Ziel angekommen ist, bleibt dieser stehen und der Spieler wird darüber in Kenntnis gesetzt, dass die Navigation nun zu Ende ist. Der Spieler kann nun weiter frei im Gebäude herumlaufen, oder über zurück in das Startmenü wechseln.
![nav_end](uploads/5da0b8f7b692f33442181e75deacf927/nav_end.PNG)
## Zugehörige Dateien
### <ins>Szenen</ins>
im Ordner **.\\Assets_Application\\Scene:**
**GuidedNavigation**
Beschreibung: Die Szene für die Navigation
### <ins>Skripte</ins>
im Ordner **.\\Assets\\\_Application\\Scripts\\Application:**
**GlobalNavigationTarget.cs**
Beschreibung: Als Klassenkonstrukt für den GlobalStorage
Näheres unter: [Daten zwischen Szenen speichern oder austauschen](https://gitlab.reutlingen-university.de/neuewelt9/nw9/-/wikis/Daten-zwischen-Szenen-speichern-oder-austauschen)
![global_nav_target](uploads/f3212c22b9d1f2db118f038ee98f1b29/global_nav_target.PNG)
**ExtensionMethods.cs**
Beschreibung: Erweiterung des <span dir="">NavMeshAgent</span>s um eine Distanzprüfung für den Pinguin zum Ziel
Quelle: <https://stackoverflow.com/questions/61421172/why-does-navmeshagent-remainingdistance-return-values-of-infinity-and-then-a-flo>
![ext_methods_1](uploads/2563a1f2436c394f32074caa6face537/ext_methods_1.PNG)
![ext_methods_2](uploads/a493ce616617630e4c9a4717bc5ac89a/ext_methods_2.PNG)
im Ordner **.\\Assets\\\_Application\\Scripts\\Controller:**
**GuideMovementController.cs**
Beschreibung: Die Navigationslogik
![guided_movement_controller_1](uploads/0b13ea227a94f8cd1b8044365a173315/guided_movement_controller_1.PNG)
![guided_movement_controller_2](uploads/e576d25e6c87558a67fea7a74cefd642/guided_movement_controller_2.PNG)
**KeyInputController.cs**
Beschreibung: Zur Verarbeitung der Controller- bzw. Tastatureingaben während dem Spiel
im Ordner **.\\Assets\\\_Application\\Scripts\\Controller\\Museum:**
**MuseumInteraction.cs**
Beschreibung: Um mit Museumsobjekten zu interagieren
![museum_interaction_1](uploads/9665b0e01ce4ae74810d6f355440bf18/museum_interaction_1.PNG)
![museum_interaction_2](uploads/600b113db792fcee7259ae4857ba7740/museum_interaction_2.PNG)
### <ins>Assets</ins>
im Ordner **.\\Assets\\VoxelAnimals:**
**Alles**
Beschreibung: Der Voxel-Pinguin
im Ordner **.\\Assets\\StreamingAssets:**
**nw9rooms.json**
Beschreibung: JSON-Datei mit Raumbezeichnungen und Beschreibungen
\ No newline at end of file