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