Niveles de torre
Lección 16 de 25 del curso Juego de Unity: Defensa de torres de Coddy.
Las torres mejorarán: cada nivel aumenta el daño y el alcance, y cada mejora cuesta más que la anterior. Los niveles siguen una regla, así que el recurso almacena la regla en lugar de una lista de números, y los métodos del ScriptableObject la calculan, de modo que todos los scripts que lo consulten obtengan la misma respuesta. El cultivo de un juego de granjas:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}El nivel 1 es el valor base. La torre solo conserva su propio level y dispara con los números correspondientes a ese nivel.
Desafío
IntermedioAsigna niveles a las torres.
- En
TowerData, añade los enteros públicosmaxLevel,upgradeCostydamagePerLevel, y el flotante públicorangePerLevel. - Añade
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAtde la misma manera;UpgradeCost(int level):upgradeCost * level. - En
Tower, añadeprivate int level = 1;,public int Level => level;ypublic void Upgrade() { level++; }; dispara conDamageAt(level)dentro deRangeAt(level).
Pulsa «Jugar»: las torres luchan como antes. Después, pulsa «Comprobar».
Pruébalo tú mismo
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;
}
Todas las lecciones de Juego de Unity: Defensa de torres
3Estrategia
Datos de torresPractica por tu cuenta: Playground de Unity