boolでフラグをつくり、ある条件になったときだけ、実行可能にできるしくみを作ってみましょう。
地面から落下するとテキストが表示され、Enterキーを押すとシーンが再ロードされてリトライできます。
落ちていない状態で、いくらEnterキーを押しても、リトライはできません。
関連記事:
他のスクリプトのBoolを取得する
Updateの中で1回だけ実行する
キーを押すたびにBoolを切り替える
座標を整数に変換して条件分岐
テキストの準備
PlaneとSphereを作成し、Sphereを地上に出します。
Sphereにリジッドボディを追加します。
テキストを作成します。
Textのチェックを外し、非表示にしておきましょう。
SphereMove.csを作成し、Sphereに追加します。
SphereMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class SphereMove : MonoBehaviour { [SerializeField] GameObject retryText; private bool isGameOver; private float speed = 3.0f; void Update() { 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 ); if(this.transform.position.y < -3) { isGameOver = true; } if(isGameOver) { retryText.SetActive(true); if (Input.GetKey(KeyCode.Return)) { SceneManager.LoadScene("SampleScene"); } } } } |
シーンを再ロードさせる場合、4行目 using UnityEngine.SceneManagement; を記述しておきましょう。
RetryTextのフィールドに、Textを入れます。
ゲームプレイして、十字キーで操作しましょう。
地面から落下すると、「Press EnterKey to Retry」が表示されて、Eneterキーを押すとリトライできます。
「Press EnterKey to Retry」が出ていない間、Enterキーを押してもリトライできないことも確認しましょう。
スタート時、isGameOverはfalseに。
落下してY座標が-3以下になったら、isGameOverがtrueに変わります。
isGameOverがtrueになっている時だけ、Enterキーでシーンを再ロードできる仕組みです。
関連記事:
他のスクリプトのBoolを取得する
Updateの中で1回だけ実行する
キーを押すたびにBoolを切り替える
座標を整数に変換して条件分岐