6.0 KiB
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]
- Das Spiel beginnt im Flugmodus (
Flying). RingCourseTrackerüberwacht, welche Ringe in fester Reihenfolge durchflogen wurden.- Nach dem letzten Ring erscheint in der Console die Aufforderung zur Landung.
- 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
- Herkunft: Asset Store – Simple Airplane Controller
- Enthält: Flugzeug-Prefabs, Runway, Landezone, Sounds und Beispielszenen unter
Example scenes/ - Skript-Details: siehe Abschnitt Skripte oben
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.