Menu
CoddyTech

Cấp độ tháp

Bài học 16 trên 25 trong khóa học Game Unity: thủ thành của Coddy.

Tháp sẽ được nâng cấp: mỗi cấp tăng sát thương và tầm bắn, đồng thời mỗi lần nâng cấp tốn nhiều hơn lần trước. Các cấp tuân theo một quy tắc, vì vậy asset lưu quy tắc thay vì một danh sách số, còn các phương thức trong ScriptableObject tính ra kết quả để mọi script yêu cầu đều nhận được cùng một đáp án. Ví dụ về cây trồng trong trò chơi nông trại:

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

Cấp 1 là giá trị cơ bản. Tháp chỉ lưu level của chính nó và bắn với các chỉ số tương ứng với cấp đó.

challenge icon

Thử thách

Trung bình

Thêm cấp độ cho tháp.

  1. Trong TowerData, thêm các số nguyên maxLevel, upgradeCost và damagePerLevel ở phạm vi công khai, cùng số thực rangePerLevel ở phạm vi công khai.
  2. Thêm DamageAt(int level): damage + damagePerLevel * (level - 1); RangeAt tương tự; UpgradeCost(int level): upgradeCost * level.
  3. Trong Tower, thêm private int level = 1;, public int Level => level; và public void Upgrade() { level++; }; bắn với DamageAt(level) trong phạm vi RangeAt(level).

Nhấn Chơi: các tháp chiến đấu như trước. Sau đó nhấn Kiểm tra.

Tự làm thử

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;
}

Tất cả bài học trong Game Unity: thủ thành

Tự luyện tập: Playground Unity