2013年5月22日水曜日

Unityの公式チュートリアルの非公式続編「ゲームルールを!!」 その3

前回、ボールがブロックに衝突した際にブロックが消えるようにしました。

今回は、すべてのブロックが消滅した際にゲームを初期化するようにしたいとおもいます。



Project ビューで右クリック → Create → javascript を選択し javascript を作成します。
ファイル名は僕は clear としております。

作成したファイルをダブルクリックするとエディタが開くので以下のように記載します。




private var blockcount : int; //ブロックの設置数

function Update () {
blockcount = GameObject.FindGameObjectsWithTag("Block").Length;
if( blockcount == 0){
Debug.Log("Cleared");
Application.LoadLevel("TheGame");
}
}

最初に宣言している変数はシーン内に設置されているオブジェクトの数をカウントする為の変数です。
頭についている private を記載することで Inspector ビューで変数を表示しないようにしています。
理由は、スクリプト内でしか使わず Inspector ビューで変数の中身を変更しない為です。

次に update クラスの頭、 blockcount ~から始まる文はゲーム内に存在している Block タグを着けられているオブジェクトの数をカウントしそれを変数に代入しています

その次の if 文は上記でカウントしたオブジェクト数が 0 の時(すべて消された時)に
Debug.Log 文でコンソールに Cleard と表示させ
そのした Application.LoadLevel で新しいシーンを呼びだしています。
今回は、他にシーンが無いため自分を再起しています。




続いて上記で作成したスクリプトをゲーム内に反映させたいと思います。

まずメニューバーの GameObject → Create Empty を選択し、空のゲームオブジェクトを作成します。名前は僕は GameRule しています。

これに先ほど作成した、スクリプト clear をドラックアンドドロップで GameRule オブジェクトに関連付けしています。

それは実行してみて、すべてのブロックが消された時正しく初期化されているか確認してください。





0 件のコメント:

コメントを投稿