Rückblick: Modulares Geschütz
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 5 von 64.
Aufgabe
EinfachBaue die Waffe von Turret1. TurretControl und Cannon sind bereit.
- Schreibe in
Ammopublic bool Take(): Verbrauche eine Granate und gibtruezurück, oder protokollierename + " is empty"und gibfalsezurück. - Mache
Weaponabstrakt mit[RequireComponent(typeof(Ammo))]undFire()zuprotected abstractohne Rumpf. Pull()tut währendcooldownnichts; andernfalls starte, wennTake()erfolgreich ist, die Abklingzeit neu und rufeFire()auf.
Drücke „Spielen“ und feuere, bis die Munition aufgebraucht ist. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
// Was alle Turmwaffen gemeinsam haben.
public class Weapon : MonoBehaviour
{
public GameObject shellPrefab;
public float cooldown = 1f;
public void Pull()
{
// Warte, bis der cooldown abgelaufen ist, nimm eine Granate aus dem Ammo und feuere dann
}
// Jede Waffe feuert auf ihre eigene Weise.
protected virtual void Fire()
{
}
// Eine Granate, die von dieser Position aus, vom Turm aus gesehen, in die Richtung fliegt, in die der Turm zeigt.
protected void Launch(Vector3 offset)
{
Instantiate(shellPrefab, transform.position + transform.rotation * offset, transform.rotation);
}
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basis-GegnerskriptAbstrakte KomponentenZusammenwirkende KomponentenRückblick: Modulares GeschützRückblick: Zwillingskanone4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-TabelleRückblick: Beute auswürfeln2Schnittstellen in Unity
IDamageableSchnittstellen und TryGetComponentGetComponentsZusammenfassung: InteraktionstasteZusammenfassung: Nächstes in Reichweite5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenDen Wind speichernWellen als DatenRückblick: Item-DatenbankRückblick: Im Shop einkaufen8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearestÜbe selbstständig: Unity-Playground