2DアクションUnityゲームの作り方メモ

【Unity】初心者向け2Dアクションゲームを作ろう④ゲームオーバーの実装方法を解説!

2Dアクション

1. はじめに

こんにちは!今回は 「Unityで2Dアクションゲームのゲームオーバー画面を実装する方法」 を解説します。

ゲームを作るうえで 「ゲームオーバー」 の仕組みはとても大切ですよね。プレイヤーの体力がゼロになったときに、ちゃんと「Game Over」の画面を表示しないと、ゲームとして成立しません!


この記事では、以下の手順で ゲームオーバー画面の作り方 を解説していきます。

UI(パネル&テキスト)の作成
プレイヤーの体力がゼロになったら消滅させる処理
ゲームオーバー画面を表示するスクリプトの実装


すでに 2Dアクションゲームの基本的な部分(移動、攻撃、敵との衝突) ができている前提で進めていきます。
もしまだ準備ができていない場合は、前回の記事をチェックしてみてくださいね!

それでは、さっそく ゲームオーバー画面の作成 からやっていきましょう!




2. ゲームオーバー画面の作成

まずは ゲームオーバー画面 を作りましょう!
Unityの UI機能 を使えば、簡単に「Game Over」と表示する画面を作ることができます。


🎨 ① パネル(背景)の作成

  1. ヒエラルキー(Hierarchy)ウィンドウ で右クリック
  2. 「UI」→「Panel」 を選択
  3. 作成したパネルの名前を 「GameOver」 に変更
  4. インスペクター(Inspector)ウィンドウ で「Color」を に設定

これで、ゲームオーバー時に表示する 黒い背景 のパネルが完成しました!


📝 ②「Game Over」の文字を追加

次に、ゲームオーバーの文字を表示する テキスト を作成します。

  1. ヒエラルキーウィンドウで「GameOver」を選択(このパネルの子オブジェクトとしてテキストを追加)
  2. 右クリック → 「UI」→「Text – TextMeshPro」 を選択
  3. 初めてTextMeshProを使う場合、ポップアップが表示されるので「Import TMP Essentials」をクリック
  4. 作成されたテキストの名前を 「GameOverText」 に変更
  5. インスペクターで以下の設定を変更
    • TextGame Over に変更
    • FontSize70 に設定(文字を大きくする)
    • TextStyleTitle に変更(太字にする)
    • Alignment(配置): 中央揃え(縦横ともに)

🔧 ③ ゲーム開始時は非表示にする

ゲームが始まったときは ゲームオーバー画面を表示しない ようにします。

  1. ヒエラルキーで「GameOver」オブジェクトを選択
  2. インスペクターの「チェックボックス」をオフ にする(非アクティブにする)

✅ これで ゲーム開始時には表示されず、必要なタイミングで表示できる ようになりました!


✅ ここまでのまとめ

  • パネルを作成 し、背景を黒く設定
  • TextMeshProのテキストを作成 し、「Game Over」と表示
  • ゲーム開始時に非表示にする設定 を適用

次のステップでは、 プレイヤーの体力が0になったらオブジェクトを消す処理 を実装していきます!




3. プレイヤーの体力が0になったら消す

次に、プレイヤーの体力が0になったら消滅する処理 を追加します。
敵にダメージを受けて 体力が0になったら、プレイヤーオブジェクトを削除 する仕組みを作りましょう!


📝 ① Playerスクリプトに「Dead()」メソッドを追加

まずは、前回作成した Playerスクリプト を編集します。

  1. プロジェクトウィンドウで「Player」スクリプトを開く
  2. 以下のコードを追加する
public void Dead() 
{
if (hp <= 0) // 体力が0以下になったら
{
Destroy(gameObject); // プレイヤーオブジェクトを削除
}
}

この Dead() メソッドは、プレイヤーの体力(hp)が0以下になったら、プレイヤーオブジェクトを削除する処理 です。


🛠 ② Damage() メソッドで「Dead()」を呼び出す

敵にぶつかるとダメージを受けて体力が減るように、 Damage() メソッド内で Dead() を呼び出します。

public void Damage(int damage)
{
hp = Mathf.Max(hp - damage, 0); // ダメージを受けて体力を減らす

  Debug.Log("残りHP: " + hp);
Dead(); // 体力が0になったらDead()を実行
}

これで、敵にダメージを受けて体力が0になったら、プレイヤーオブジェクトが消える ようになりました!


✅ ここまでのまとめ

  • Dead() メソッドを作成 し、体力が0になったらプレイヤーを削除
  • Damage() メソッドで Dead() を呼び出し、ダメージ時に適用

次のステップでは、プレイヤーが消えたら「Game Over」画面を表示する処理 を追加していきます!




4. 体力が0になったらゲームオーバーを表示する

次に、プレイヤーの体力が0になったら「Game Over」画面を表示する処理 を追加していきます!
先ほど作成した GameOverパネル をアクティブにするために、新しく 管理スクリプト(MainManager) を作りましょう。


🎮 ① MainManagerオブジェクトの作成

  1. ヒエラルキー(Hierarchy)ウィンドウで右クリック
  2. 「Create Empty(空のオブジェクトを作成)」 を選択
  3. オブジェクトの名前を 「MainManager」 に変更
  4. インスペクターの「Transform」項目をリセット(位置を (0,0,0) にする)

📝 ②「MainManager」スクリプトの作成

  1. プロジェクトウィンドウで右クリック「Create」→「C# Script」 を選択
  2. スクリプトの名前を 「MainManager」 に変更
  3. 作成したスクリプトを MainManagerオブジェクトにドラッグ&ドロップ(アタッチ)
  4. スクリプトを開いて、以下のコードを入力
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MainManager : MonoBehaviour
{
    [SerializeField, Header("ゲームオーバーUI")]
    private GameObject _gameOverUI;

    private GameObject _player;

    void Start()
    {
        _player = FindObjectOfType<Player>()?.gameObject;
    }

    void Update()
    {
        ShowGameOver();
    }

    private void ShowGameOver() 
    {
        if (_player != null) return; // プレイヤーがまだいる場合は何もしない

        _gameOverUI.SetActive(true); // GameOverパネルを表示
    }
}

🔧 ③ InspectorでゲームオーバーUIを設定

  1. 「MainManager」オブジェクトを選択
  2. インスペクターの「GameOverUI」欄に、作成した「GameOver」パネルをドラッグ&ドロップ
  3. ゲームを実行して確認

体力が0になってプレイヤーが消えると、「Game Over」画面が表示されるようになりました! 🎉


✅ ここまでのまとめ

  • 空のオブジェクト「MainManager」を作成
  • C#スクリプト「MainManager」を作成し、GameOver表示の処理を記述
  • インスペクターで「GameOver」パネルをセットし、実装完了!

これで、プレイヤーがやられたら ゲームオーバー画面がしっかり表示される ようになりました! 🎮✨




【Unity】2Dアクションゲーム開発を加速!

Unityで 2Dアクションゲーム を作るなら、イチから作るよりもプロ仕様のアセットを活用するのが圧倒的に効率的 です!
そこでオススメしたいのが、Unity Asset Storeで大人気の 「Corgi Engine – 2D + 2.5D Platformer」 です!

👉 Corgi Engineの詳細はこちら


🎮 Corgi Engineとは?

「Corgi Engine」 は、2Dアクションゲーム(プラットフォーマー) の開発を強力にサポートするアセットです。
スーパーマリオやメトロイドのようなゲームを、コードを書かずにすぐ作れるのが特徴!

完成度の高いプレイヤー&敵AIの動き(ジャンプ・ダッシュ・攻撃 など)
すぐに使えるプレハブやエフェクトが豊富(初心者でも簡単にカスタマイズ可能!)
スマホ・PC・コンソールなど、マルチプラットフォーム対応

「ゼロから作るのは大変…」「プロのような動きを実装したい!」という人には、まさに 最適なアセット です!

このアセットを使えば、ゲーム開発のスピードが一気に加速 します!


✅ ① すぐに動くプレイヤーキャラ!

Corgi Engineには、完成済みのキャラクターコントローラー が搭載!
ジャンプ・ダッシュ・壁キック・水中移動 など、標準で実装済み なので、すぐにゲームを作り始められます。

🛠 もし自作で作ると…

  • 移動・ジャンプ・壁キックのスクリプトを自作 しなければならない
  • アニメーションの管理、スムーズな挙動の調整に膨大な時間がかかる

Corgi Engineなら、最初からプロ仕様の動きが完成済み! 🎉


✅ ② 敵AIも即戦力!

「敵の動きを作るのが難しい…」と悩んでいませんか?

Corgi Engineなら、すぐに使える敵キャラのAIが豊富
巡回・ジャンプ攻撃・追尾AI などのパターンがすでに用意されている ので、
プレイヤーに合わせて簡単にカスタマイズ可能 です!


✅ ③ スマホ&PC&コンソールに対応!

PCだけでなく、スマホやNintendo Switch、PlayStationにも対応!
タッチ操作・ゲームパッド操作もサポートされているので、本格的なマルチプラットフォームゲームを作れます!


🔥 Corgi Engineがオススメな人

「2Dアクションゲームを作りたいけど、ゼロからの開発は大変…」
「プロ仕様のスムーズなキャラ挙動を手に入れたい!」
「ゲームをすぐに形にして、開発スピードを上げたい!」

そんな人に Corgi Engineはぴったりのアセット です!✨


💡 今すぐCorgi Engineをチェック!

Unityで 本格的な2Dアクションゲーム を作りたいなら、
「Corgi Engine」を使えば、開発の手間をグッと減らしつつ、クオリティの高いゲームを作ることができます!

👉 Corgi Engineの詳細をチェック

早速試して、あなたのオリジナル2Dアクションゲームを作ってみましょう!🚀

5. まとめ

お疲れさまでした!🎉 この記事では Unityの2Dアクションゲームにゲームオーバー画面を実装する方法 を解説しました。

今回のポイントを振り返ってみましょう!

ゲームオーバー画面を作成(パネルとTextMeshProを使って「Game Over」を表示)
プレイヤーの体力が0になったらオブジェクトを削除Dead() メソッドを追加)
プレイヤーが消えたらゲームオーバー画面を表示MainManager スクリプトを作成)

この仕組みを使えば、プレイヤーがやられたときにゲームオーバーを表示する基本の流れ が完成しましたね!


🎮 次のステップは?

ゲームオーバー画面を表示するだけでは、ゲームが終了したままになってしまいます
そこで、次回は 「リトライ機能(ゲームを最初からやり直す)」 を追加していきましょう!

次回の内容
🔄 リトライボタンの作成(ボタンを押すとシーンをリロード)
🔄 ゲームをリセットするスクリプトの実装

ゲームとしての完成度をさらに高めていくので、ぜひ次の記事もチェックしてくださいね!




よくある質問(FAQ)

Q
GameOverの文字が小さすぎるんですが?
A

FontSizeの値を調整して大きくしてください。TextMeshProの枠のサイズも広げましょう。

Q
GameOverが表示されません!
A

スクリプトのShowGameOver()メソッドが正しく動作しているか確認し、ゲームオーバーUIがアタッチされているか見直してください。

Q
プレイヤーが消えた後も操作できてしまいます…
A

Time.timeScale = 0;を使用してゲームを一時停止する方法を追加すると、操作を防ぐことができます。

タイトルとURLをコピーしました