防御塔等级
Coddy Unity 塔防游戏 课程的第 16 课,共 25 课。
炮塔会升级:每升一级都会增加伤害和射程,每次升级的花费都比上一次更高。等级遵循一条规则,因此资源文件保存的是规则,而不是数字列表;ScriptableObject 上的方法会计算出结果,这样每个脚本请求时都会得到相同的答案。农场游戏中的作物:
public int YieldAt(int level)
{
return baseYield + yieldPerLevel * (level - 1);
}等级 1 对应基础值。炮塔只保存自己的 level,并使用该等级对应的数值开火。
挑战
中等为塔添加等级。
- 在
TowerData中,添加 public int 字段maxLevel、upgradeCost和damagePerLevel,以及 public float 字段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++; };在RangeAt(level)范围内使用DamageAt(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 塔防游戏中的所有课
自己练习: Unity 在线编辑器