Menu
CoddyTech

Уровни башен

Урок 16 из 25 курса Игра на Unity: Tower Defense на Coddy.

Башни будут улучшаться: каждый уровень увеличивает урон и дальность, а каждое улучшение стоит дороже предыдущего. Уровни подчиняются правилу, поэтому ресурс хранит правило, а не список чисел, а методы в ScriptableObject вычисляют значения, чтобы каждый скрипт, который их запрашивает, получал один и тот же ответ. Урожай в фермерской игре:

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

Уровень 1 — это базовое значение. Башня хранит только свой level и стреляет с параметрами для этого уровня.

challenge icon

Задание

Средне

Добавьте башням уровни.

  1. В TowerData добавьте публичные целые числа maxLevel, upgradeCost и damagePerLevel, а также публичное число с плавающей точкой rangePerLevel.
  2. Добавьте DamageAt(int level): damage + damagePerLevel * (level - 1); RangeAt — аналогично; UpgradeCost(int level): upgradeCost * level.
  3. В 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