Уровни башен
Урок 16 из 25 курса Игра на Unity: Tower Defense на Coddy.
Башни будут улучшаться: каждый уровень увеличивает урон и дальность, а каждое улучшение стоит дороже предыдущего. Уровни подчиняются правилу, поэтому ресурс хранит правило, а не список чисел, а методы в ScriptableObject вычисляют значения, чтобы каждый скрипт, который их запрашивает, получал один и тот же ответ. Урожай в фермерской игре:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}Уровень 1 — это базовое значение. Башня хранит только свой level и стреляет с параметрами для этого уровня.
Задание
СреднеДобавьте башням уровни.
- В
TowerDataдобавьте публичные целые числаmaxLevel,upgradeCostиdamagePerLevel, а также публичное число с плавающей точкойrangePerLevel. - Добавьте
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAt— аналогично;UpgradeCost(int level):upgradeCost * level. - В
Towerдобавьтеprivate int level = 1;,public int Level => level;иpublic void Upgrade() { level++; }; стреляйте с помощьюDamageAt(level)в пределахRangeAt(level).
Нажмите «Играть»: башни сражаются как и прежде. Затем нажмите «Проверить».
Попробуйте сами
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;
}
Все уроки раздела Игра на Unity: Tower Defense
Потренируйтесь самостоятельно: Песочница Unity