Unityで立体迷路を作る⑤|複数フロア・フロア表示・プレイ時間のUIを実装する

Unity立体迷路 パネルに現在のフロアとプレイタイムを表示させた画像 ゲームの作り方
現在のフロアとプレイタイムの表示

🔍本記事では Rigidbody や CharacterController を使わずに、C# スクリプトだけでプレイヤーを移動させる方法 で立体迷路を作成しています。

今回は 2階や3階など複数フロアの追加プレイヤーが現在どのフロアにいるかを表示するテキスト、さらに プレイ時間の表示方法 を実装していきます。

✅前回の記事はこちら👇

複数フロアの追加

  1. 床の設定
    各フロアの「」オブジェクトはコライダーを設定せず、見えるだけにしてOK。
  2. 壁と階段の設定
    2階以上の壁や階段には、それぞれ専用のレイヤーを設定。
    壁や階段には Mesh Collider を追加する。
  3. 階段の制御
    階段の登り口以外は壁にしておくことで、プレイヤーが不自然な場所から降りないようにする。
Unity立体迷路 階段の登り口以外を壁にした画像

現在のフロアをUIに表示する

UIパネルにテキストを追加

  • ヒエラルキーで CanvasUI → Text (TextMeshPro) を追加。
  • インスペクターで初期テキスト、FontSize、位置を調整。

フォントを導入する手順

  1. Google Fontsなどから任意のフォントをダウンロード
  2. Unity の Assets フォルダにフォントをドラッグ&ドロップ
  3. Window → TextMeshPro → Font Asset Creator でフォントアセットを生成
  4. 生成したフォントアセットを TextMeshPro テキストの Font Asset に設定

スクリプトを追加する

using TMPro;

public TextMeshProUGUI floorText;
public float floorHeight = 2f; // 1階の高さ(2m)

void Update()
{
 UpdateFloorText();
}

void UpdateFloorText()
{
 if (floorText == null) return;
 int floor = Mathf.RoundToInt(transform.position.y / floorHeight) + 1; // 1階始まり
 floorText.text = floor + “F”;
}

インスペクターで設定

  • Player のインスペクターに FloorText をアタッチ。
  • 実行(Play)して、階層の高さに応じて正しく表示されるか確認。

座標がずれる場合の調整

もしフロア表示が実際の高さとずれる場合は、基準座標を調整します。

public float baseFloorY = 1f; // 1階の基準高さ

void UpdateFloorText()
{
 if (floorText == null) return;
 float relativeY = transform.position.y – baseFloorY;
 int floor = Mathf.RoundToInt(relativeY / floorHeight) + 1;

 floorText.text = floor + “F”;

プレイ時間をUIに表示する

UIテキストを追加

  • 先ほど作った FloorText を複製し、「TimeText」にリネーム。
  • 初期テキストや位置を調整。

スクリプトを追加する

public TextMeshProUGUI timeText;
private float playerTime = 0f;

void Update()
{
 UpdatePlayTime();
}

void UpdatePlayTime()
{
 if (timeText == null) return;

 playerTime += Time.deltaTime;

 int minutes = Mathf.FloorToInt(playerTime / 60f);
 int seconds = Mathf.FloorToInt(playerTime % 60f);

 timeText.text = string.Format(“{0:00}:{1:00}”, minutes, seconds);

インスペクターで設定

  • Player のインスペクターに TimeText をアタッチ。
  • Play 実行して、時間が加算されるか確認。

まとめ

今回は以下を実装しました👇

  • 複数フロアを追加して、2階・3階の構造を作る方法
  • 現在のフロアを TextMeshPro のUIに表示する方法
  • プレイ時間を計測してUIに表示する方法

これで「立体迷路ゲーム」としての遊びやすさがぐっと増します。

👉 次回は ポーズやリスタート機能の追加 について解説していきます。

コメント

タイトルとURLをコピーしました