🎮 Unity6で作る「1シーン完結 2D脱出ゲーム講座」第9回です。
前回は、アイテムを選択できる仕組みを実装しました。
今回は、実際に 「木の棒」を選択してフェンス奥の蛇口ハンドルを手前に取り出すギミック を作っていきます。
📌 前回の記事はこちら
🎥 今回の動作例動画
ギミックの流れ
- 東の背景をクリックしてフェンスの拡大画面へ
- フェンス奥の蛇口ハンドルをクリック → 未選択では反応なし
- 木の棒を選択状態にしてハンドルをクリック
- 木の棒で掻き出すアニメーションが再生
- 手前に移動したハンドルをクリックして取得
画面構成(Hierarchy)
Stage
├─North
├─East
├─FenceZoom
| ├─FaucetHandle_Back(奥)
| ├─FaucetHandle_Front(手前)
| ├─StickUse_1(木の棒アニメ)
| ├─StickUse_2
| └─StickUse_3
- FenceZoom…フェンスの拡大画面
- FaucetHandle_Back…奥にあるハンドル
- FaucetHandle_Front…手前に出てきた後のハンドル
- StickUse_x…木の棒アニメーション用画像
フェンス拡大画面のセットアップ
- FenceZoom の背景画像を設定
BackgroundTypeに追加BackgroundManagerのインスペクターでアタッチ

東の背景からフェンス拡大へ遷移
East オブジェクトに ZoomObject をアタッチし、ボタンを追加
- ボタンの「OnClick」に ZoomObject の
OnClick()を設定 - クリックすると FenceZoom に切り替わる
📌 詳しいやり方はこちら👇
2D脱出ゲームの作り方③|オブジェクトをクリックして拡大画面に切り替える方法
蛇口ハンドルと木の棒アニメーションを配置
● 奥と手前の蛇口ハンドル
- 奥(FaucetHandle_Back)…最初にクリックする対象
- 手前(FaucetHandle_Front)…木の棒で動かしたあとに見える状態

● 木の棒の使用アニメーション画像
- StickUse_1
- StickUse_2
- StickUse_3
(必要枚数だけ追加OK)

木の棒を使う仕組み(StickRetrieve.cs)
using UnityEngine;
using System.Collections;
public class StickRetrieve: MonoBehaviour
{
public GameObject[] stickAnimationImages;//木の棒を使うアニメーション
public GameObject faucetHandle_Back; //奥のハンドル
public GameObject faucetHandle_Front;//手前のハンドル
public ItemData requiredItem;//必要アイテム
private bool isCompleted = false;
private void Start()
{
faucetHandle_Back.SetActive(true);
faucetHandle_Front.SetActive(false);
foreach (var image in stickAnimationImages)
{
image.SetActive(false);
}
}
public void OnClick()
{
if (isCompleted) return;
//選択中のアイテム取得
ItemData selected = ItemBoxManager.Instance.GetSelectedItem();
//正しいアイテム(木の棒)ならアニメ再生
if (selected == requiredItem)
{
StartCoroutine(PlayStickAnimation());
}
}
private IEnumerator PlayStickAnimation()
{
isCompleted = true;
BackgroundManager.Instance.HideArrows();
faucetHandle_Back.SetActive(false);
// アニメ順再生
foreach (var image in stickAnimationImages)
{
image.SetActive(true);
yield return new WaitForSeconds(0.5f);
image.SetActive(false);
}
faucetHandle_Front.SetActive(true);
ItemBoxManager.Instance.DeSelectItem();
BackgroundManager.Instance.ShowBackArrows();
}
}
インスペクターの設定
● FenceZoom(背景)に StickRetrieve を追加
以下を紐付ける:
- StickAnimationImages
- FaucetHandle_Back
- FaucetHandle_Front
- RequiredItem(木の棒の ScriptableObject)
● 奥の蛇口ハンドル
- Button を追加
- OnClick に StickRetrieve.OnClick() を設定
● 手前の蛇口ハンドル
ItemPickupスクリプトを追加- ScriptableObject を設定
- ボタンの OnClick → ItemPickup.OnClick
📌 スクリプタブルオブジェクトについてはこちら👇
2D脱出ゲームの作り方⑥|アイテムスロットの作成とデータベース管理
BackgroundManager.scに機能追加
アニメ中に画面移動されないように制御:
public void HideArrows()
{
backButton.SetActive(false);
}
public void ShowBackArrows()
{
backButton.SetActive(true);
}
ItemBoxManager.scに機能追加
▼選択中のアイテムを取得するメゾット
public ItemData GetSelectedItem()
{
if (currentSlot != null)
return currentSlot.currentItem;
return null;
}
▼アイテム選択を解除するメゾット
public void DeSelectItem()
{
currentSlot.Deselect();
currentSlot = null;
}
動作確認チェック
✔ 東の背景クリック → フェンス拡大へ
✔ アイテム未選択で奥のハンドル → 無反応
✔ 木の棒選択でクリック → アニメ再生
✔ ハンドルが手前に出現
✔ 手前のハンドルをクリックで取得
まとめ
今回は、選択したアイテムを使って動くギミックを実装しました。
脱出ゲームらしさが一気に強くなる重要なポイントです!
✅次回は、🔧 取り出した蛇口ハンドルを使って、水道から水を出すギミック
を実装します👇




コメント