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.
Desafio
MédioAdicione níveis às torres.
- Em
TowerData, adicione os ints públicosmaxLevel,upgradeCostedamagePerLevele o float públicorangePerLevel. - Adicione
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAtda mesma forma;UpgradeCost(int level):upgradeCost * level. - Em
Tower, adicioneprivate int level = 1;,public int Level => level;epublic void Upgrade() { level++; }; dispare comDamageAt(level)dentro deRangeAt(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
3Estratégia
Dados da TorrePratique por conta própria: Playground de Unity