三星です。
前回の続きです。
Contents
Wave型の仕組み作り
今回のチュートリアルはWave型のシューティングゲームです
空のGameObjectを作成し、名前をWaveとしてください。
いつもの方法ですね。
3つのEnemyを子要素とします。
最後にプレハブにします。
ゲームの進行に伴って何度も出てくるようにするためにはプレハブ化は必須ですね。
Waveを呼び出すEmitter (エミッター)を作成する
// Waveプレハブを格納する
public GameObject[] waves;
public GameObject[] waves;
public を宣言しています。
これでWaveプレハブをインスペクターから割り当てることが出来ますね。
waves.Length == 0
length は要素数を取得します。
格納されるべきWaveが格納されていない、という状況を表しています。たぶん。
yield break;
コルーチンを終了させます。
ということで、Emitter.csはコルーチン型のstart()しかないのでこの関数は終了します。
// Waveを作成する
GameObject wave = (GameObject)Instantiate (waves [currentWave], transform.position, Quaternion.identity);
GameObject wave = (GameObject)Instantiate (waves [currentWave], transform.position, Quaternion.identity);
Waveの作成。
instantiateでプレハブをクローンします。
元となるプレハブオブジェクトは public GameObject[] waves;で宣言した waves 。
それを currentWave という名前で生成します。
後に続く引数は位置と回転です。
// Waveの子要素のEnemyが全て削除されるまで待機する
while (wave.transform.childCount != 0) {
yield return new WaitForEndOfFrame ();
}
while (wave.transform.childCount != 0) {
yield return new WaitForEndOfFrame ();
}
Emitterはこの間動きません。
これもコルーチンだから出来ることです。
Emitter (エミッター)
発生させるもの、というような意味。
元々はパーティクルの発生器などをそう呼んでいたらしい。
ここではもちろんそうじゃなくWaveの発生器。