🔍Unity6 を使った「1シーン完結型・2D脱出ゲーム制作講座」です。
今回は、クリックするとマークが切り替わるパネルギミックを作成し、
4つのパネルを特定のマークに揃えることでギミックを解除する仕組みを実装します。
また、前回作成した DoorBase スクリプトと連携し、
解除後にドアが開閉できるようにします。。
✅前回の記事はこちら👇
実装するギミック内容
🎥 動作例動画
- パネルをクリックするとマークが切り替わる
- 4つのパネルがすべて正解のマークになると解除
- 解除後はパネル操作不可となり、1秒後、前の画面に戻る
- ドアが解錠され、開閉可能になる
👉 脱出ゲームで定番の 「マーク合わせパズル」 を実装します。
ヒエラルキーの構成
Stage
└─ RightDoorZoom(扉の拡大背景)
├─ Panel1
├─ Panel2
├─ Panel3
└─ Panel4
ポイント
- ギミックは 拡大背景(Zoom画面) に配置
- 各パネルは UI > Image + Button を使用

パネル画像の作成方法(Excelを使用)
① Excelでマーク画像を作成
- テキストボックスを使用して記号(★・♣・▲ など)を入力
- テキストボックスは 正方形 にする
- フォントサイズを枠いっぱいに調整

② 画像として取り込み
- Snipping Tool で切り取り
- Unity にインポート
- Sprite として使用
👉 複雑な画像編集ソフトを使わなくてもOKです。
PanelSwitch.cs(パネル切り替えスクリプト)
パネルをクリックすると、マークが順番に切り替わるスクリプトです。
using UnityEngine;
using UnityEngine.UI;
public class PanelSwitch : MonoBehaviour
{
public Image panelImage;
public Sprite[] patterns;
public int correctIndex; // 正解のマーク番号
public PanelPuzzleManager manager;
int index = 0;
bool isLocked = false;
public void OnClick()
{
if (isLocked) return;
index = (index + 1) % patterns.Length;
panelImage.sprite = patterns[index];
manager.CheckClear();
}
public bool IsCorrect()
{
return index == correctIndex;
}
public void Lock()
{
isLocked = true;
}
}
PanelPuzzleManager.cs(正解判定&解除)
4つのパネルをチェックし、すべて正解ならドアを解除する管理スクリプトです。
using UnityEngine;
using System.Collections;
public class PanelPuzzleManager : MonoBehaviour
{
public PanelSwitch[] panels;
public DoorBase targetDoor;
bool isCleared = false;
public void CheckClear()
{
if (isCleared) return;
foreach (PanelSwitch panel in panels)
{
if (!panel.IsCorrect())
return;
}
// 全部正解!
isCleared = true;
StartCoroutine(OnUnlocked());
foreach (PanelSwitch panel in panels)
{
panel.Lock();
}
IEnumerator OnUnlocked()
{
targetDoor.Unlock();
BackgroundManager.Instance?.HideArrows();
SEManager.Instance?.PlayUnLockSE();
if (targetDoor != null)
targetDoor.Unlock();
yield return new WaitForSeconds(1f);
BackgroundManager.Instance?.GoBack();
}
}
インスペクター設定
PanelSwitch
各パネル(Panel1~4)に設定します。
- PanelImage
→ 自分自身の Image をアタッチ - Patterns
→ 切り替えたいマークの数を設定 - Patterns の要素
→ マーク画像を順番に設定 - CorrectIndex
→ 正解となるマーク番号 - Manager
→ PanelPuzzleManager をアタッチ(※後ほど作成)
- Button コンポーネントを追加
- OnClick に
PanelSwitch.OnClick()を設定
👉 Panel1 を作成後、複製して Panel2~4 を配置すると楽です。
PanelPuzzleManager
RightDoorZoom(拡大背景) にアタッチします。
- Panels
→ サイズを 4 に設定
→ Panel1~Panel4 を登録 - TargetDoor
→ 前回記事で作成した DoorBase を設定
その他の設定
BackgroundTypeに RightDoorZoom を追加- BackgroundManager の Backgrounds に登録
- DoorBase のLockedBackgroundID に RightDoorZoom を設定
まとめ
今回は、マークを揃えて解除するパネルギミックを実装しました。
- クリックでマーク切り替え
- 正解判定は管理スクリプトで一括処理
- DoorBase と連携してドアを解錠
この仕組みを使えば、記号・数字・色・アイコンなど、
さまざまな応用ギミックが作れます。
🎥 作成したギミックの動画はこちら👇


コメント