Unityちゃんの爆破ゲームを作ろう
2014年11月20日(木)
スクリプトの記述
まず、「Hierarchy」から「unitychan」を選択し、「Add Component」から「New Script」を選択し、「Name」に「UnityChanExplode」、「Language」に「Java Script」を指定して、「Create and Add」をクリックします。すると「Inspector」内に「Unity Chan Explode(Script)」が追加されます。「Script」の「UnityChanExplode」をダブルクリックしてMono Developを起動して、リスト1のコードを記述します。
//#pragma strict (1) static var no:int; function Start () { no=6; (2) } function OnControllerColliderHit(hit:ControllerColliderHit){ ObstacleCheck(hit.collider.gameObject); (3) } function ObstacleCheck (obj:GameObject) { var msg=GameObject.Find("msg"); (4) if(Input.GetMouseButtonDown(0)) (5) { if(obj.name==”Cube1”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; (6) } if(obj.name==”Cube2”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; } if(obj.name==”Cube3”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; } if(obj.name==”Cube4”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; } if(obj.name==”Cube5”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; } if(obj.name==”Cube6”){ obj.gameObject.GetComponent(“Detonator”).Explode(); no--; } msg.guiText.text=”残り:”+no.ToString(); (7) if(no==0) (8) { yield WaitForSeconds (5.0); Application.LoadLevel(Application.loadedLevel); } } }
- C#のコードをJava Scriptから使用しているため、#pragma strictの宣言があるとエラーになるので、コメントアウトで外しています。
- 静的変数noを宣言し、Start関数内で6に初期化します。
- OnControllerColliderHitイベントで、プレイヤーがCubeに衝突した時の処理を記述してあるObstacleCheck関数を実行します。
ObstacleCheck関数内では以下の処理を行います。 - msgというGameObjectをFindで見つけ、変数msgに格納しておきます。
- Input.GetMouseButtonDown(0)でマウスの「左」ボタンがクリックされた時の処理を記述します。
- プレイヤーが各Cubeに衝突してマウスの「左」ボタンがクリックされた時は、該当するCubeが爆発します。そして変数noの値は1減少します。
- Cubeの残り個数を表示します。
- 変数noの値が「0」なら(つまりCubeの残りが「0」なら)、5秒待って、最初の画面に戻ります。
次に、「Hierarchy」内の「TimeText」に追加している「myTimeScript」を記述します(リスト2)。
#pragma strict static var time:float; (1) function Start () { time=0; } function Update () { if (UnityChanExplode.no>0) { time+=Time.deltaTime; (2) } var now:int=time; (3) guiText.text="<Color=red>TIME:" + now.ToString()+"</Color>"; }
- 静的変数timeを宣言し、Start関数内で「0」で初期化しておきます。Update関数内で以下の処理を行います。
- UnityChanExplodeスクリプト内に記述した静的変数noが0より大きかった場合は、つまりCubeが残っている間は、経過時間を表示します。
- 変数nowに経過時間を代入し、guiText.textに経過時間を「赤」で表示します。
以上で全ての設定が完了しました。Unityメニューの[File]ー[Save Scene as]と選択して「Unityちゃん爆発」という名前で保存しておきましょう。
プレイ画面で実行すると動画1のようになります。
今回は、「Cube」に貼り付ける「Texture」には「Import」したコンポーネントがデフォルトで持っているものを使用しました。「Texture」は「Asset Store」でいくらでもダウンロードできますので、その場の雰囲気に合った「Texture」を使用すると、もっと画面が引き締まるかもしれません。今回はこれで終わりです。爆発のゲームは迫力がありますね。
次回は、いよいよ最終回です。マシンガンを連射するサンプルを紹介します。お楽しみに。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。