Menu
CoddyTech

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.

challenge icon

Desafío

Intermedio

Asigna niveles a las torres.

  1. En TowerData, añade los enteros públicos maxLevel, upgradeCost y damagePerLevel, y el flotante público rangePerLevel.
  2. Añade DamageAt(int level): damage + damagePerLevel * (level - 1); RangeAt de la misma manera; UpgradeCost(int level): upgradeCost * level.
  3. En Tower, añade private int level = 1;, public int Level => level; y public void Upgrade() { level++; }; dispara con DamageAt(level) dentro de RangeAt(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

Practica por tu cuenta: Playground de Unity