障害物にぶつかると、ゲームオーバーになる仕組みを作ってみましょう。
今回の例では、Cubeが障害物に触れると、動きが止まってGameOverの文字が表示されます。
(Unity2019.4.27で作成しています。)

触れるとゲームオーバー表示
2つのオブジェクトを作成。
白のCubeがプレーヤー、黒のSphereが敵とします。

Cubeにはリジッドボディを追加し、Use Gravityのチェックを外します。

SphereにObstacleというタグ名をつけます。

UIからテキストを作成します。

GameOverTextを用意します。

スタート時は非表示(チェックを外す)にしておきましょう。

Player.csを作成し、Cubeに追加。

Player.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Player : MonoBehaviour { [SerializeField] GameObject gameOverText; private float speed = 3.0f; public bool isGameOver; void Update() { if (!isGameOver) { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; transform.Translate(moveX, 0, 0); } } void OnCollisionEnter(Collision other) { if (other.gameObject.tag == "Obstacle") { isGameOver = true; gameOverText.SetActive(true); } } } |
GameOverTextのフィールドに、そのオブジェクトを入れます。

ゲームプレイして、Sphere(障害物)にぶつかってみましょう。
触れた瞬間に、GameOverの文字が表示され、Cubeの動きが止まります。
