フィールドから落ちてしまえば、ゲームオーバーになる仕組みを作ってみましょう
Cubeを操作して、落下すればGameOverのテキストを表示させてみます。
関連記事:
Colliderを使った接触判定
OnCollisionEnterとOnTriggerEnterの違い
倒れると削除
ゲームオーバーのエリアをつくる
プレーヤーとしてCube、床として平面オブジェクトを用意し、色をつけました。
ヒエラルキーに、CubeとPlaneがある状態です。
Cubeにはリジッドボディをつけます。
続いて、床の下に、ゲームオーバーの当たり判定をつくりましょう。
平面オブジェクトをもう一つ作成します。
オブジェクト名をGameOverAreaに変えて、スケールのXとZをそれぞれ5に変更しました。
GameOverAreaのY座標を操作して、下の方に移動します。
横からみると、このようになりました。
さらにGameOverAreaにボックスコライダーを追加し、トリガーにするにチェックを入れましょう。
GameOverAreaを透明にする
GameOverAreaに透明色をつけましょう。
まずはマテリアルを作成し、Toumeiと名前をつけます。
Rendering ModeのところをFadeに変更しましょう。
アルベドから色の設定を行います。
Aのところを0にしましょう
透明色が出来ました。
これをGameOverAreaにアタッチしましょう。
GameOverAreaが透明になりました。
ゲームオーバーのテキスト
TextMeshProで、テキストを作成します。
各項目を調整しながら、テキストの位置を決めます。
このようにテキストを配置しました。
Textオブジェクトのチェックを外して、非表示にしておきます。
落下したらゲームオーバーになるスクリプト
プレーヤーの動きと、ゲームオーバーの表示については、スクリプトが必要です。
Cubeに、CubeMove.csを作成して追加しましょう。
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 24 25 26 27 28 29 30 31 32 33 34 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { [SerializeField] GameObject gameOverText; private float speed = 0.1f; void Update() { if (Input.GetKey (KeyCode.LeftArrow)) { transform.Translate (-speed, 0.0f, 0.0f); } if (Input.GetKey (KeyCode.RightArrow)) { transform.Translate (speed, 0.0f, 0.0f); } if (Input.GetKey (KeyCode.UpArrow)) { transform.Translate (0.0f, 0.0f, speed); } if (Input.GetKey (KeyCode.DownArrow)) { transform.Translate (0.0f, 0.0f, -speed); } } void OnTriggerEnter(Collider other) { if (other.gameObject.name == "GameOverArea") { Destroy(this.gameObject); gameOverText.SetActive(true); } } } |
GameOverTextのフィールドには、テキストオブジェクトを入れましょう。
プレイして動きを確認します。
関連記事:
Colliderを使った接触判定
OnCollisionEnterとOnTriggerEnterの違い
倒れると削除