Menu
CoddyTech

Níveis da Torre

Lição 16 de 25 do curso Jogo de Unity: Defesa de Torres da Coddy.

As torres serão aprimoradas: cada nível aumenta o dano e o alcance, e cada aprimoramento custa mais que o anterior. Os níveis seguem uma regra, então o recurso contém a regra em vez de uma lista de números, e os métodos no ScriptableObject calculam o resultado, para que todo script que perguntar receba a mesma resposta. O cultivo de um jogo de fazenda:

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

O nível 1 é o valor base. A torre mantém apenas seu próprio level e dispara com os números correspondentes a esse nível.

challenge icon

Desafio

Médio

Adicione níveis às torres.

  1. Em TowerData, adicione os ints públicos maxLevel, upgradeCost e damagePerLevel e o float público rangePerLevel.
  2. Adicione DamageAt(int level): damage + damagePerLevel * (level - 1); RangeAt da mesma forma; UpgradeCost(int level): upgradeCost * level.
  3. Em Tower, adicione private int level = 1;, public int Level => level; e public void Upgrade() { level++; }; dispare com DamageAt(level) dentro de RangeAt(level).

Pressione “Jogar”: as torres lutam como antes. Depois, pressione “Verificar”.

Experimente você mesmo

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 as lições de Jogo de Unity: Defesa de Torres

Pratique por conta própria: Playground de Unity