ウェーブ
Coddyの「Unityゲーム:タワーディフェンス」コースのレッスン 5/25。
Grunt と Runner はプレハブになり、Tank と Boss も追加され、Spawner は WP0 に配置されています。ウェーブは、敵の種類、数、間隔を表すいくつかの数値です。そこで、Wave は [System.Serializable] クラスで、Spawner はゲームの8つのウェーブを Inspector で設定する List<Wave> を保持します。[System.Serializable] がないと、Unity はリストに値を設定できず、リストは空のままになります。
間隔を空けて敵を出現させるには、コルーチンを使います。yield return new WaitForSeconds(...) はゲームを止めずに待機します。プレハブからシーン内のウェイポイントを参照することはできないため、Spawner は Instantiate の直後に、新しく生成した敵それぞれにウェイポイントを渡します。
Enemy enemy = Instantiate(wave.enemy, waypoints[0].position, Quaternion.identity);
enemy.waypoints = waypoints;
yield return new WaitForSeconds(wave.spacing);チャレンジ
簡単Grunt の最初のウェーブを道に沿って進ませます。
Wave.csで、Waveに[System.Serializable]を付け、public Enemy enemy;、public int count;、public float spacing;を追加します。WaveSpawnerに[SerializeField] private List<Wave> waves;と[SerializeField] private Transform[] waypoints;を追加します。Startから、上記のようにwaves[0].count体の敵を生成するコルーチンを実行します。
「プレイ」を押すと、Grunt が6体、1.2秒間隔で進み出します。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
// 後で実装:敵をウェーブごとに経路に沿って送り出す。
public class WaveSpawner : MonoBehaviour
{
}
Unityゲーム:タワーディフェンスのすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド