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.
Aufgabe
MittelGib den Türmen Level.
- Füge in
TowerDatadie öffentlichen int-FeldermaxLevel,upgradeCostunddamagePerLevelsowie das öffentliche float-FeldrangePerLevelhinzu. - Füge
DamageAt(int level)hinzu:damage + damagePerLevel * (level - 1);RangeAtentsprechend;UpgradeCost(int level):upgradeCost * level. - Füge in
Towerprivate int level = 1;,public int Level => level;undpublic void Upgrade() { level++; }hinzu; schieße mitDamageAt(level)innerhalb vonRangeAt(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