マルチプラットフォーム対応のゲーム開発エンジンUnityを体験する 5

スクリプトの記述

スクリプトの記述

まず、「Hierarchy」から「unitychan」を選択し、「Add Component」から「New Script」を選択し、「Name」に「UnityChanExplode」、「Language」に「Java Script」を指定して、「Create and Add」をクリックします。すると「Inspector」内に「Unity Chan Explode(Script)」が追加されます。「Script」の「UnityChanExplode」をダブルクリックしてMono Developを起動して、リスト1のコードを記述します。

Unityちゃんが体当たりしマウスの左クリックが押された時に爆発する処理(UnityChanExplode.js)

//#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);
    }
 }
}
  1. C#のコードをJava Scriptから使用しているため、#pragma strictの宣言があるとエラーになるので、コメントアウトで外しています。
  2. 静的変数noを宣言し、Start関数内で6に初期化します。
  3. OnControllerColliderHitイベントで、プレイヤーがCubeに衝突した時の処理を記述してあるObstacleCheck関数を実行します。
    ObstacleCheck関数内では以下の処理を行います。
  4. msgというGameObjectをFindで見つけ、変数msgに格納しておきます。
  5. Input.GetMouseButtonDown(0)でマウスの「左」ボタンがクリックされた時の処理を記述します。
  6. プレイヤーが各Cubeに衝突してマウスの「左」ボタンがクリックされた時は、該当するCubeが爆発します。そして変数noの値は1減少します。
  7. Cubeの残り個数を表示します。
  8. 変数noの値が「0」なら(つまりCubeの残りが「0」なら)、5秒待って、最初の画面に戻ります。

次に、「Hierarchy」内の「TimeText」に追加している「myTimeScript」を記述します(リスト2)。

経過時間を表示する処理(myTimeScript.js)

#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>";
}
  1. 静的変数timeを宣言し、Start関数内で「0」で初期化しておきます。Update関数内で以下の処理を行います。
  2. UnityChanExplodeスクリプト内に記述した静的変数noが0より大きかった場合は、つまりCubeが残っている間は、経過時間を表示します。
  3. 変数nowに経過時間を代入し、guiText.textに経過時間を「赤」で表示します。

以上で全ての設定が完了しました。Unityメニューの[File]ー[Save Scene as]と選択して「Unityちゃん爆発」という名前で保存しておきましょう。

プレイ画面で実行すると動画1のようになります。

今回は、「Cube」に貼り付ける「Texture」には「Import」したコンポーネントがデフォルトで持っているものを使用しました。「Texture」は「Asset Store」でいくらでもダウンロードできますので、その場の雰囲気に合った「Texture」を使用すると、もっと画面が引き締まるかもしれません。今回はこれで終わりです。爆発のゲームは迫力がありますね。

次回は、いよいよ最終回です。マシンガンを連射するサンプルを紹介します。お楽しみに。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る