C#
game
Unity
Unity入門

ひつじコレクション - 8. ミニマップを表示

ミニゲームを作ってUnityを学ぶ![ひつじコレクション編]

第8回目: ミニマップを表示

チェイサーとの当たり判定を実装したことでひつじコレクションは開始から終了までひと通りプレイできるようになりました。
しかし実際にプレイしてみると視界の狭さからチェイサーの位置が把握できず、プレイヤーにとってはストレスを感じてしまう状態です。

今回はこの問題を解決するためにゲーム画面にミニマップを表示して、プレイヤーがより楽しく遊べるようにひつじコレクションを改善していきます。

尚、今回はとても短いです。

ミニマップ用のカメラオブジェクト

ゲーム内にミニマップを表示させるためにはミニマップ用のカメラを用意するのが最も簡単な方法です。
現在プレイヤーを斜め上から見下ろす形で追従しているMainCameraとは別に新しいカメラオブジェクトMinimapCameraを作成してシーンに配置します。

  • 「Create → Camera」を選択してMinimapCameraをゼロポジションに配置
  • 初めからアタッチされている以下のコンポーネントを除去
1.GUI Layer
2.Flare Layer
3.Audio Listener
  • 下記を参考にCameraコンポーネントのフィールドを変更
Projection: Orthographic
Size: 8
ViewportRect: X=0.02, Y=0.03, W=0.25, H=0.4
Depth: 0

action_sheep_ss_8_1.jpg

これによって画面左下にMinimapCameraの映し出す映像が表示されるようになりました。

ミニマップカメラの追従設定

続いて、作成したMinimapCameraに対して常にプレイヤーを中心とした一定範囲を表示する機能を実装します。

  • MinimapCameraにFollowCameraをアタッチ
  • StageConstructorを修正
StageConstructor.cs
        //-------------------
        // カメラの追従設定 //
        //---------------------------------------------------------------------------------

        [SerializeField]
        private FollowCamera mFollowCameraMain;
        [SerializeField]
追加    private FollowCamera mFollowCameraMinimap; // MinimapCameraを指定

        private void SetCameraTarget()
        {
            mFollowCameraMain.SetTarget(Player.transform, new Vector3(0.0f, 4.0f, -5.0f), Quaternion.Euler(new Vector3(37.0f, 0.0f, 0.0f)));
追加        mFollowCameraMinimap.SetTarget(Player.transform, new Vector3(0.0f, 12.0f, 0.0f), Quaternion.Euler(new Vector3(90.0f, 0.0f, 0.0f)));
        }

MinimapCameraにアタッチしたFollowCameraに対して、プレイヤーを真上から見下ろした状態で追従するよう初期化を行っています。

action_sheep_ss_8_2.jpg

プロジェクトを実行して、ミニマップが実際に機能しているか確認してください。

ミニマップの完成!だけど……

以上のように、Unityではただ単純にミニマップを表示するだけならば複数カメラを設置することで簡単に実装することができます。

ですか今回作成したミニマップにはパフォーマンスの観点から大きな問題があり、開発環境によってはミニマップ非表示状態と表示状態で明らかにゲームの動作が重くなるのを確認できるかもしれません。

この問題については後程パフォーマンスチューニングの項目内で解決しますので、それまでプロジェクト実行時の動作がどうしても重い場合はミニマップの表示機能を一旦取り外しておいてください。


次のページに進む
イントロダクションに戻る


ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています