Files
MMI2-Project/README.md
2026-06-02 08:26:52 +02:00

6.0 KiB
Raw Permalink Blame History

MMI2 Flugsimulator-Projekt (Unity)

Tool Version / Hinweis
Unity Hub Aktuelle Version installieren
Unity Editor 6000.2.1f1 (Unity 6)
Git (optional) Zum Klonen und Einreichen des Repos

Beim ersten Öffnen lädt Unity alle benötigten Pakete herunter (URP, Input System, Cinemachine, …). Das kann einige Minuten dauern.


Projekt öffnen

Das Unity-Projekt befindet sich nicht im obersten Git-Ordner, sondern im Unterordner MMI2-project/:

mmi2-project/
├── README.md          ← diese Datei
├── .gitignore
└── MMI2-project/      ← diesen Ordner in Unity Hub öffnen
    ├── Assets/
    ├── Packages/
    └── ProjectSettings/

Unity Hub → Add → Ordner MMI2-project auswählen → Open

Die Hauptszene für das Testen:

Assets/Scenes/PlaneScene.unity

Doppelklick in der Project-Ansicht, dann Play ▶ drücken.


Spielablauf (Überblick)

flowchart LR
    A[Start / Flug] --> B[Ring 1]
    B --> C[Ring 2]
    C --> D[Ring 3]
    D --> E[Konsole: Landen!]
    E --> F[Landebahn / Runway]
  1. Das Spiel beginnt im Flugmodus (Flying).
  2. RingCourseTracker überwacht, welche Ringe in fester Reihenfolge durchflogen wurden.
  3. Nach dem letzten Ring erscheint in der Console die Aufforderung zur Landung.
  4. Das Flugzeug landet über die Runway des Assets „Simple Airplane Controller".

Den aktuellen Fortschritt zeigt die Console (Menü: Window → General → Console), z. B.:

[RingCourse] Ring 2/3 passed: Ring


Steuerung (Tastatur)

Taste Funktion
W / S oder Pfeil hoch/runter Nicken (Pitch)
A / D oder Pfeil links/rechts Rollen (Roll)
Q / E Gieren (Yaw)
Linke Umschalttaste Turbo
Leertaste Nach der Landung: Flugzeug neu starten

Hinweis: Einmal in die Game-Ansicht klicken, damit Tastatureingaben im Spiel ankommen und nicht im Inspector landen.


Ordnerstruktur in Assets/

Ordner / Datei Inhalt
Scenes/PlaneScene.unity Hauptszene (Flugzeug, Ringe, Terrain, …)
Scripts/ Eigene Skripte für den Ring-Kurs (siehe unten)
HeneGames/Simple Airplane Controller/ Asset-Store-Paket: Flugphysik, Kamera, Runway, Beispielszenen
Settings/ URP-Grafikeinstellungen (Universal Render Pipeline)

Skripte

Eigene Skripte (Assets/Scripts/)

Skript Aufgabe
RingCourseTracker.cs Zentraler Kurs-Manager. Die Ringe werden im Inspector in der gewünschten Reihenfolge eingetragen. Das Skript verfolgt, welcher Ring als nächstes angeflogen werden muss, zählt den Fortschritt und gibt nach dem letzten Ring die Landeanweisung in der Console aus.
RingCheckpoint.cs Sitzt auf jedem Ring-Objekt. Erkennt per Trigger, wenn das Flugzeug den Ring durchfliegt, und meldet dies an den RingCourseTracker allerdings nur, wenn der Ring aktuell an der Reihe ist. Falsche Reihenfolge wird abgewiesen und protokolliert. Nach dem Durchfliegen wird der Trigger deaktiviert.

RingCourseTracker steuert den übergeordneten Spielablauf (Ringe zählen → Landen); RingCheckpoint ist für die Kollisionserkennung an jedem einzelnen Ring zuständig und leitet Treffer weiter.

HeneGames Simple Airplane Controller (Assets/HeneGames/.../Scripts/)

Skript Aufgabe
SimpleAirPlaneController.cs Herzstück des Flugzeugs. Verarbeitet Eingaben, bewegt und rotiert das Flugzeug und verwaltet Turbo sowie Motoreffekte. Kennt drei Zustände: Flying (normaler Flug), Landing (automatische Landesequenz) und Takeoff (Start von der Runway). Bei einer Kollision mit Hindernissen wird ein Absturz ausgelöst.
SimpleAirplaneInput.cs Liest Tastatureingaben aus und wandelt sie in Steuerwerte um (WASD, Pfeiltasten, Q/E, Shift). Nutzt primär das neue Unity Input System; bei Bedarf Fallback auf das Legacy-Input-System.
SimpleAirplaneCamera.cs Steuert die Cinemachine-Verfolgungskamera. Verengt das Sichtfeld (FOV) beim Turbo für einen Geschwindigkeitseffekt, sperrt den Mauszeiger und wechselt nach einem Absturz den Kamera-Update-Modus.
SimpleAirPlaneCollider.cs Trigger-Komponente an den Rumpfteilen des Flugzeugs. Meldet Kollisionen mit der Spielwelt an den Controller Ringe und die Landezone werden dabei bewusst ausgenommen.
LandingArea.cs Trigger am Eingang der Landebahn. Prüft, ob das Flugzeug aus der richtigen Richtung anfliegt, und übergibt es dann an die Runway der Zustand wechselt auf Landing.
Runway.cs Führt die Landung durch, indem das Flugzeug sanft zur Endposition geführt wird. Nach abgeschlossener Landung startet die Leertaste den Takeoff. Sobald das Flugzeug wieder fliegt, wird die Runway zurückgesetzt.
RunwayUIManager.cs Zeigt optionale UI-Hinweise während der Landephase an (z. B. „Leertaste zum Starten"). In PlaneScene wird der Fortschritt primär über die Console ausgegeben.

Überblick über das Zusammenspiel: Tastatureingabe → SimpleAirPlaneController bewegt das Flugzeug → SimpleAirplaneCamera folgt → RingCheckpoint-Trigger melden Durchflüge an RingCourseTracker → nach dem letzten Ring leitet LandingArea die Landung ein → Runway führt sie aus.


Externes Asset: Simple Airplane Controller

Render Pipeline: Das Projekt verwendet URP (Universal Render Pipeline). Die Materialien des Assets wurden auf URP-Shader umgestellt ohne diese Anpassung erscheinen Objekte pink.


Bei Fragen oder Problemen gerne eine Mail an tom.hempel@hs-coburg.de.