
こんにちは!カトサンラボのかとこうです。
この記事ではUnityで「ゲームクリアの処理」を
作る方法についてわかりやすく解説しております。
今回はクリアした時にログを出して、
ゲームを停止させることでクリアを表現しています。
今回の作業の流れ

▼ 動画での解説はこちら(2時間9分14秒くらいから)
1、 ゴール用のC#スクリプトを作ろう
まずは、ゴールに辿り着いた時の処理を書くために
ゴールクリア用のC#スクリプトを作ります。
ゴール用のC#スクリプトを作る手順
- プロジェクトウインドウの「Assets」をクリックする
- プロジェクトウィンドウの「+」ボタンをクリックする
- 「C#スクリプト」を選択して作成する
- スクリプト名を
GoalClear
に変更する(他のわかりやすい名前でもOK)
これで、新しくゴール用のC#スクリプトが作成できました!

2、 ゴールのオブジェクトにスクリプトをつけよう
次に、作ったスクリプトをゴールのオブジェクト
(ひよこちゃんの画像)につけましょう。
ゴールにC#スクリプトをつける手順
- ヒエラルキーから「Goal」オブジェクトをクリックする
- 作成した
GoalClear
スクリプトを、Goalのインスペクターにドラッグ&ドロップする
これでGoalのインスペクターに
スクリプトが表示されればOKです!

3、ゲームクリア時のコードを書こう
ここからは、スクリプトを開いて
ゲームクリアの処理を書いていきます。
今回は、
- プレイヤーがゴールに当たったら
- 「ゲームクリア!」というログを表示
- 時間を停止してゲームを止める
というシンプルな内容です。
以前作ったゲームオーバーの処理に
内容が似ているので、コピーして
改良していきますね。
コードを書く手順
GoalClear
スクリプトをダブルクリックして開く- 以前作った「トゲに当たったらゲームオーバー」のスクリプトから、コードをコピーする
- コードの内容を「クリア用」に少し変更する
ゲームクリアのコードはこちら
using System.Colections;
using System.Colections.Generic;
using UnityEngine;
public class GoalClear : MonoBehaviour
{
// 衝突した時に処理が行われる関数
public void OnColisionEnter2D(Colision2D colision)
{
// もしプレイヤーがゴールにぶつかった時にクリアの処理を行う
if (colision.gameObject.tag == "Player") // もしぶつかったゲームオブジェクトのタグがプレイヤーだったら
{
Debug.Log("ゲームクリア!");
Time.timeScale = 0; // ゲームをストップするコード
}
}
}
これでコードは完成です!
4、テストプレイでクリアの処理を確認しよう!
最後に、テストプレイを行ってクリアの処理が
ちゃんと出来ているかを確認しましょう。
チェックポイント
- プレイヤーがゴールに触れたとき、「ゲームクリア!」と表示されるか
- プレイヤーがゴールに触れたとき、時間が停止してゲームが止まるか
- ゴールまで正常に到達できるか
シーンビューの上にある「▶ボタン」をクリックして
テストプレイを開始後、動作を確かめましょう。

▶︎ 注意点と今後の改善ポイント
今回のテストを行った際に、
「プレイヤーがゴールの上をすり抜けられる」
と言う改善点がありました。

プレイヤーがゴールの上をすり抜けられると
ゴールのひよこちゃんに当たらないため
ゲームがクリアになりません。
次回は、このゴールを越えられてしまう問題を
改善していきましょう!
まとめ
今回の作業では、Unityでゲームクリアの
処理を作るために以下のことを行いました。
- ゴール用のC#スクリプトを作成する
- Goalオブジェクトへゴール用のC#スクリプトをつける
- 「プレイヤーが触れたらクリア」と言う処理のコードを書く
- テストで動作の確認をする
今回は以前作ったコードをコピーして修正することで、
効率よく作成できましたね。
同じような処理を作る場合には役立つテクニックなので
覚えておくといいかもしれません。
次の記事ではゴールを越えられないように
見えない壁を作る作業について解説しますね。
▼ 次の記事はこちら