Menu
CoddyTech

タワーのレベル

Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 16/25。

タワーはアップグレードされます。レベルごとにダメージと射程が増加し、アップグレードの費用は前回より高くなります。レベルには規則性があるため、アセットには数値のリストではなく規則を保持し、ScriptableObject のメソッドで計算することで、どのスクリプトが尋ねても同じ答えが得られます。農場ゲームにおける作物の例:

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

レベル 1 は基本値です。タワーは自身のlevelだけを保持し、そのレベルに応じた数値で攻撃します。

challenge icon

チャレンジ

中級

タワーにレベルを設定しましょう。

  1. TowerDataに、public intのmaxLevel、upgradeCost、damagePerLevelと、public floatの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++; }を追加します。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プレイグラウンド