値が0になったらゲームオーバーを表示する
画像の追加
カウントダウンが終了したらゲームオーバーを画像を表示します。
本記事からダウンロードできるサンプルファイル(アセット)のtime_out.pngを、ProjectウィンドウのImagesフォルダーにドロップします。
Hierarchyウィンドウに先ほどImagesフォルダにドロップしたtime_outをドロップします。
プログラムから画像を非表示に
time_outはゲーム開始時は表示されないようにしたいので、プログラムで非表示に変更します。GameManager.csのStartメソッドの終わりに以下の行を追加します。
// タイムアウトは非表示に GameObject.Find("time_out").renderer.enabled = false;
GameObjectの非表示は、renderer.enabledプロパティをfalseに指定することで実現します。
タイムアウト時に画像を表示する
続いてゲームオーバー時にtime_outを表示するようにプログラムを修正します。GameManager.csのUpdateメソッドを以下のように修正します。
void Update () { // 左右のキーで左右に移動 float horizontal = Input.GetAxis("Horizontal"); // キー入力がありジャンプ中でない場合は左右に移動 if (horizontal != 0.0f && this._charactorScript.isJumping == false) { this._moveCharactor(Vector2.right * _horizontalForce * horizontal); } // スペースキーでジャンプ // ジャンプ中はスペースキーが押されてもさらに上昇しない if (Input.GetKeyDown("space") && this._charactorScript.isJumping == false) { this._moveCharactor(Vector2.up * _upForce); } // 経過時間を取得 TimeSpan pastTime = DateTime.Now - this._startTime; // カウントダウンを開始 var countDown = this._limitTIme - pastTime.Seconds; if (countDown >= 0) { // 文字を変更 Text countDownText = GameObject.Find("countDownText").GetComponent<Text>(); countDownText.text = countDown.ToString(); } else { GameObject.Find("time_out").renderer.enabled = true; GameObject.Find("countDownText").GetComponent<Text>().text = ""; } }
countDownの値が0以上ならカウントダウンの数字を表示し、0より小さくなった場合にtime_outを表示します。
ハムスターや操作キャラクターを動かすことができるなど、ゲームオーバー処理としてはおかしな点は残っていますが、この辺は後で調整していきます。
まとめ
今回はタイマー処理と、プログラムからGameObjectを操作する方法を紹介しました。次回は音を鳴らす処理を実装していきます。