タイムアップになれば、操作不可になるように、スクリプトを作成しましょう。
今回のカウンダウンタイマーは、TextMeshProを使用して作ります。
タイマーが0になれば、TimeUpの表示が出て、プレーヤー(Cube)は動けなくなります。
関連記事:
TextMeshProのカラー設定
TextMeshProをスクリプトで表示
TextMeshProのフォントアセットと日本語対応
TextMeshProのサイズ・字体・シャドウ
ハイスコアをつくる
タイムアタックできる「カウントアップタイマー」
ベストタイム(最短時間)の更新とリセット
クリックするたびにタイマー作動
キー長押しでゆっくり数を変化させる
制限時間になればButtonを表示
タイムアップになればリトライボタンを表示
TextMeshProの作成
まずはTextMeshProをインポートしましょう。
ヒエラルキー > UI > TextMeshProを選択します。
TMP Importの画面が出ますので、Import TMP Essentialsをクリックしましょう。
Assets内に、TextMeshProのフォルダが確認できます。
Text(TMP)のサイズ、色、位置などを設定します。
ゲームビューではこのように見えています。
オブジェクトの用意
Plane、Cube、空のオブジェクト(GameObject)を作成します。
オブジェクトに色をつけ、Cubeは地上に出します。
ゲームビューではこのように見えています。
タイムアップのスクリプト
カウンダウンするタイマーと、時間が過ぎれば「TimeUp!」と表示されるようにしましょう。
TimeScript.csを作成し、GameObjectに追加します。
TimeScript.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; //TextMeshProを扱う際に必要 public class TimeScript : MonoBehaviour { [SerializeField] TextMeshProUGUI timeText; private float time; public bool isTimeUp; public static TimeScript instance; public void Awake() { if(instance == null) { instance = this; } } void Start() { time = 3.0f; } void Update() { if (0 <= time) { time -= Time.deltaTime; timeText.text = "Time: " + time.ToString("F1"); } else if(0 >= time) { isTimeUp = true; timeText.text = "TimeUp!"; } } } |
TextMeshProを扱う際に必要には、using TMPro; を忘れずに記述しておきましょう。
time.ToString("F1") と書けば、少数第一位までを表示できます。
TimeTextのフィールドに、Text(TMP)を入れましょう。
続いて、プレーヤー(Cube)を操作できるようにスクリプトを作成します。
CubeMove.csを作成し、Cubeに追加します。
こちらは、「TimeUp!」が出てくれば、それ以上は操作不可にするスクリプトです。
CubeMove.csを記述しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed = 3.0f; void Update() { if(!TimeScript.instance.isTimeUp) { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); } } } |
TimeUpクラスの isTimeUp を参照しています。
isTimeUp が falseの状態(タイマーが動いている間)のみ、操作可能です。
ゲームプレイして、動きを確認しましょう。
タイマーが動いている間は、移動可能。
タイムアップになれば、動けなくなります。
関連記事:
TextMeshProのカラー設定
TextMeshProをスクリプトで表示
TextMeshProのフォントアセットと日本語対応
TextMeshProのサイズ・字体・シャドウ
ハイスコアをつくる
タイムアタックできる「カウントアップタイマー」
ベストタイム(最短時間)の更新とリセット
クリックするたびにタイマー作動
キー長押しでゆっくり数を変化させる
制限時間になればButtonを表示
タイムアップになればリトライボタンを表示