🔍本記事では、RigidbodyやCharacterControllerを使わずにC#スクリプトだけで立体迷路を作る方法を解説します。
今回は、各フロアごとのミニマップを作成してUIに表示する手順を紹介します。
✅前回の記事はこちら👇
レンダーテクスチャを作成
- プロジェクトウィンドウで右クリック → 作成 → レンダーテクスチャ を選択
- フロアの数だけ複製し、任意の名前を設定

レイヤーを作成・設定
- Unity上部の「編集 → プロジェクト設定 → タグとレイヤー」を開く
- Player レイヤーを作成
- MiniMap1~4 レイヤー(各フロア用)を作成
- フロアの床をそれぞれのMiniMapレイヤーに割り当て
- 階段もMiniMapレイヤーに複製して割り当て
- Playerを Map レイヤーに変更(子オブジェクトで形やサイズを自由に設定可能)

↑BlenderからCone
ミニマップ用カメラを追加
- ヒエラルキーにカメラを追加し、迷路の真上に配置
- 投影方法 → 平行投影
- サイズ → 10(迷路サイズに合わせる)
- Far → 10(軽量化のため最小限)
- ターゲットテクスチャ に作成したレンダーテクスチャを割り当てる
※シーンビュー右下でカメラ画像が迷路にぴったり収まるよう調整
※フロア分カメラを複製し、それぞれレンダーテクスチャを割り当て
※メインカメラ以外の Audio Listener は削除

パネルにRawImageを追加
- ヒエラルキーのパネルに UI → Raw Image を追加
- テクスチャ に作成したレンダーテクスチャを割り当て
- 位置・サイズを調整し、フロア分複製

ミニマップ切替スクリプトを作成
using UnityEngine;
public class MinimapSwitcher : MonoBehaviour
{
public GameObject minimapFloor1;
public GameObject minimapFloor2;
public GameObject minimapFloor3;
public GameObject minimapFloor4;
public Transform player;
void Update()
{
if (player.position.y < 2) ShowFloor1Minimap();
else if (player.position.y < 4) ShowFloor2Minimap();
else if (player.position.y < 6) ShowFloor3Minimap();
else ShowFloor4Minimap();
}
void ShowFloor1Minimap()
{
minimapFloor1.SetActive(true);
minimapFloor2.SetActive(false);
minimapFloor3.SetActive(false);
minimapFloor4.SetActive(false);
}
void ShowFloor2Minimap()
{
minimapFloor1.SetActive(false);
minimapFloor2.SetActive(true);
minimapFloor3.SetActive(false);
minimapFloor4.SetActive(false);
}
void ShowFloor3Minimap()
{
minimapFloor1.SetActive(false);
minimapFloor2.SetActive(false);
minimapFloor3.SetActive(true);
minimapFloor4.SetActive(false);
}
void ShowFloor4Minimap()
{
minimapFloor1.SetActive(false);
minimapFloor2.SetActive(false);
minimapFloor3.SetActive(false);
minimapFloor4.SetActive(true);
}
}
- RawImageをまとめる親オブジェクトを作成
- スクリプトをアタッチし、インスペクターで割り当てる

動作確認
- ミニマップにPlayerの現在地が表示されているか
- 各フロアに移動したときに、対応するミニマップが表示されるか
まとめ
今回は、フロアごとのミニマップ作成とUI表示の方法を解説しました。
次回はゴールの判定とゲームクリア時の演出について解説します。




コメント