Rückblick: Modularer Geschützturm
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 5 von 50.
Aufgabe
EinfachBaue die beiden Geschütztürme des Testgeländes aus Teilen. TurretControl.cs dreht jeden Geschützturm bereits mit den Pfeiltasten nach links und rechts, und Shell.cs lässt eine Granate nach vorne fliegen. Die Szene weist Turret1 eine Cannon und eine Ammo mit 4 Granaten sowie Turret2 eine TwinCannon und eine Ammo mit 3 Granaten zu. Schreibe die Teile:
- Ammo: ein öffentliches int
shellsund eine öffentliche Methodebool Take(). Wenn noch eine Granate übrig ist, verbraucht sie eine und gibttruezurück. Wenn keine mehr übrig ist, gibt sie den Namen des Objekts undis emptyaus, zum BeispielTurret2 is empty, und gibtfalsezurück. - Weapon: eine abstrakte Komponente, die immer mit einer Ammo-Komponente ausgestattet ist, mit einem öffentlichen
shellPrefab(ein GameObject), einem öffentlichen floatcooldown(der Inspector legt den Wert auf 1 fest) und einer öffentlichen MethodePull(). Ein Abfeuern während der Abklingzeit bewirkt nichts und verbraucht keine Granate. Andernfalls startet die Abklingzeit, wennTake()eine Granate liefert, undFire()wird ausgeführt – eine abstrakte Methode, die jede Waffe selbst implementiert. - Cannon feuert eine Granate von 1 Einheit vor dem Geschützturm ab. TwinCannon feuert mit einer Granate zwei Granaten ab: eine von 0.4 links und eine von 0.4 rechts von diesem Punkt. Eine Granate startet bei
transform.position + transform.rotation * offsetund ist wie der Geschützturm ausgerichtet (transform.rotation);offsetist dabei der vom Geschützturm aus gesehene Punkt, zum Beispielnew Vector3(0f, 0f, 1f). - In TurretControl löst die Leertaste den Abzug der Waffe aus, die der Geschützturm gerade hat.
Drücke Spielen, drehe die Geschütztürme und feuere, bis beide leer sind, und klicke dann auf Überprüfen.
Probier es selbst
using UnityEngine;
// Was alle Turmwaffen gemeinsam haben.
public class Weapon : MonoBehaviour
{
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basisskript für GegnerAbstrakte KomponentenKomponenten im ZusammenspielRückblick: Modularer Geschützturm4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-Tabelle7Zustandsautomaten
Zustände als KlassenEin ZustandsautomatÜbergängeGegner-KIWiederholung: Türzustände10Projekt: Arena-Überlebenskampf
Der HeldGegnertypen2Interfaces in Unity
IDamageableInterfaces und TryGetComponentGetComponentsRückblick: Interaktionstaste5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenWellen als DatenRückblick: Item-Datenbank8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearest