値が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を操作する方法を紹介しました。次回は音を鳴らす処理を実装していきます。

