フラッピーバード風ゲームの作り方

Unity ゲームオーバーで時間停止の処理を作成しよう:2Dフラッピーバード風ゲームを作る方法その10

2025年7月24日

かとこう

こんにちは!カトサンラボのかとこうです。

この記事では、ゲーム制作でよく使う

ゲームオーバー処理

について解説をしていきます。

今回の内容では、

プレイヤーが障害物にぶつかったときに
ゲームオーバーになって時間が停止する

というシンプルな仕組みを作成していきますね。

Unityの操作にまだ慣れていない方でも、
手順通りに進めれば簡単にできますよ!

今回の目標

以下のような処理を作っていきます。

  • プレイヤーがトゲ(障害物)にぶつかったら
  • ゲームオーバーのログを表示
  • 時間を停止してゲームがストップする

作業の流れ(全5ステップ)

ゲームオーバーの処理を作成しようのまとめ

▼ 動画での解説はこちら(1時間24分34秒くらいから)

スポンサーリンク

1. ゲームオーバー用のC#スクリプトを作成しよう

まずは、ゲームオーバー処理を書くための
C#スクリプトを作ります。

C#スクリプトの作成手順

  1. Unityのプロジェクトウィンドウで「+」ボタンをクリック
  2. 表示されたメニューから「C# Script」を選択する
  3. 作成されたスクリプトに CollisionGameOver という名前を付けましょう(名前は自由です)

完成図

ゲームオーバー用のC#スクリプトを作って名前を変更した画像

2. スクリプトをトゲのオブジェクトにつけよう

作成したゲームオーバー用の
C#スクリプトをトゲの
オブジェクトにくっつけましょう。

C#スクリプトをトゲにつける手順

  1. ヒエラルキーでthornDot(トゲ)をクリック
  2. インスペクターを表示する
  3. プロジェクトウィンドウから CollisionGameOver スクリプトを、インスペクターにドラッグ&ドロップする

完成図

トゲにゲームオーバーのスクリプトをつけた画像

3. ゲームオーバーの時間停止の処理をスクリプトに書こう

次はC#スクリプトを開いて、
ゲームオーバーの時間停止の処理を
実際に書いていきましょう!

ゲームオーバー用のC#スクリプトを
ダブルクリックして開きます。

スクリプトに以下のようなコードを書きます(コピペも可)

using System.Colections;
using System.Colections.Generic;
using UnityEngine;


public class ColisionGameOver : MonoBehaviour
{
  
 // 衝突した時に処理が行われる関数
 public void OnColisionEnter2D(Colision2D colision)
 {
   // もしプレイヤーが障害物にぶつかった時にゲームオーバーの処理を行う
   if (colision.gameObject.tag == "Player") // もしぶつかったゲームオブジェクトのタグがプレイヤーだったら
   {
     Debug.Log("ぶつかったよ!ゲームオーバー!");
     Time.timeScale = 0; // ゲームをストップするコード
   }
 }
}

ポイント

  • OnCollisionEnter2D() は衝突時に呼ばれる関数です
  • if 文で「ぶつかった相手がプレイヤーかどうか」を判断します
  • Time.timeScale = 0; を使うと時間が停止して、ゲームの動きが止まります

4. プレイヤーのタグを「Player」に設定しよう

スクリプトでは「Player」というタグを使うことで
プレイヤーを判別しています。

そのためUnity側でもタグの設定が必要です。

タグの設定手順

  1. ヒエラルキーでPlayerをクリック
  2. インスペクターのTag欄をクリック
  3. 「Player」を選択(なければ「Add Tag」で追加)する

完成図

プレイヤーのTagをPlayerの変更した画像

5. テストプレイで動作確認をしよう!

ここまで出来たらテストプレイを行って
ゲームオーバーの動作確認をしていきましょう。

ゲームオーバーの動作確認の手順

  1. シーン上部の「▶︎再生ボタン」をクリックしてプレイを開始する
  2. プレイヤーがトゲにぶつかると…
    • コンソールウインドウのログに「ぶつかったよ!ゲームオーバー!」と表示される
    • そしてゲームがストップする

▶︎ コンソールを見やすくするために、事前にログをクリアしておくのがおすすめです。

→ ConsoleウインドウのClearをクリックする

完成図

ゲームオーバーのログが表示された画像

補足:もっとゲームらしくするには?

今回はコンソールにログを表示することと
ゲームの停止を使用することで
ゲームオーバーを表現しました。

これをより本格的にしたい場合は…

  • 「Game Over」テキストの表示
  • リトライボタンの追加
  • 専用のゲームオーバー画面へ切り替え

…といった拡張も可能です。

まとめ

今回の記事ではゲームオーバーの処理を作成してきました。

今回の内容では、

プレイヤーが障害物にぶつかったときに
ゲームオーバーになり時間を停止する

というシンプルな仕組みを作成してきましたが、

  • OnCollisionEnter2D() で衝突を検知する
  • if (tag == "Player") でプレイヤーと判定する
  • Time.timeScale = 0 でゲームを停止する

といった内容を作成することで、
基本的なゲームオーバー処理が完成しましたね!

次の内容では床のプレハブ化と
Unityにおけるプレハブについての
説明を行っていこうと思います。

また記事を読んでいただけると嬉しいです。

それではここまで読んでいただきありがとうございました!

▼ 次の記事はこちら

Unityで2Dフラッピーバード風ゲームを作る方法その11:床のプレハブ化をしよう

-フラッピーバード風ゲームの作り方