Menu
CoddyTech

Turmlevel

Lektion 16 von 25 im Kurs Unity-Spiel: Tower Defense von Coddy.

Türme werden verbessert: Jede Stufe erhöht Schaden und Reichweite, und jedes Upgrade kostet mehr als das vorherige. Die Stufen folgen einer Regel, daher enthält das Asset die Regel statt einer Zahlenliste, und Methoden auf dem ScriptableObject berechnen das Ergebnis, sodass jedes Skript, das danach fragt, dieselbe Antwort erhält. Das Erntegut eines Farmspiels:

public int YieldAt(int level)
{
    return baseYield + yieldPerLevel * (level - 1);
}

Stufe 1 ist der Basiswert. Der Turm speichert nur seine eigene level und feuert mit den Werten für diese Stufe.

challenge icon

Aufgabe

Mittel

Gib den Türmen Level.

  1. Füge in TowerData die öffentlichen int-Felder maxLevel, upgradeCost und damagePerLevel sowie das öffentliche float-Feld rangePerLevel hinzu.
  2. Füge DamageAt(int level) hinzu: damage + damagePerLevel * (level - 1); RangeAt entsprechend; UpgradeCost(int level): upgradeCost * level.
  3. Füge in Tower private int level = 1;, public int Level => level; und public void Upgrade() { level++; } hinzu; schieße mit DamageAt(level) innerhalb von RangeAt(level).

Drücke auf „Spielen“: Die Türme kämpfen wie zuvor. Drücke dann auf „Prüfen“.

Probier es selbst

using UnityEngine;

[CreateAssetMenu(fileName = "NewTower", menuName = "Tower Defense/Tower Data")]
public class TowerData : ScriptableObject
{
    public string towerName;
    public int cost = 50;
    public int damage = 2;
    public float range = 4f;
    public float fireRate = 1f;
}

Alle Lektionen in Unity-Spiel: Tower Defense

Übe selbstständig: Unity-Playground