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 đó.
Thử thách
Trung bìnhThêm cấp độ cho tháp.
- Trong
TowerData, thêm các số nguyênmaxLevel,upgradeCostvàdamagePerLevelở phạm vi công khai, cùng số thựcrangePerLevelở phạm vi công khai. - Thêm
DamageAt(int level):damage + damagePerLevel * (level - 1);RangeAttương tự;UpgradeCost(int level):upgradeCost * level. - Trong
Tower, thêmprivate int level = 1;,public int Level => level;vàpublic void Upgrade() { level++; }; bắn vớiDamageAt(level)trong phạm viRangeAt(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