ミニマップの作り方1

前回までで敵キャラが一通り完成しました。そこで早速ステージづくりに入りたいところですが…その前にひと手間加えてゲームの完成度を高めようと思います。そのひと手間とは3Dゲームでよく見かける「ミニマップ」です。

ミニマップの例

今回はこのミニマップの制作にチャレンジしてみましょう。一見すると難しそうですが、理屈が分かればそれほど手間をかけずに作ることができます。

前置き:なぜミニマップが必要なのか?

それにしても、なぜ今回のゲームにはミニマップが必要なのでしょうか?他の多くの3Dゲームで導入されているといっても、必ずしもつければいいというわけではありません(ゲームによっては邪魔になるので)。したがって、まずはその辺をよく考えないといけませんね。

それで答えを先に言ってしまうと、このゲームにミニマップが必要な理由は「カメラが前方固定なので背後を見づらいから」です。勘の鋭い方は既にお気づきかと思いますが…例えばユニティちゃんを追いかけてくるオバケキャラの場合、真後ろから追いかけられるとよほど接近しない限りはカメラに映らないので、プレイヤーはまず気づきません。

なのでもしオバケがカメラにギリギリ映らない状態で迫ってきていたとしたらどうでしょうか?「コイン集めに夢中になって立ち止まったら、いきなりオバケが背後から現れてゲームオーバー」なんて事態になることが想像できると思います。このような事故的なゲームオーバーはプレイヤーの不満の種になりかねないので、あらかじめできる限り排除しておくべきです。

そこでいつでも後ろを確認できるようにミニマップを設置しておくのが親切だろう、というのが今回ミニマップを作る理由になります。このようにゲーム制作ではある要素を「なんとなく」追加するのではなく、しっかりと根拠を持って作るのが重要なのです。こうすることで説得力が増しますし、無駄なものを作らずに済むので労力の削減にもつながります。

Unityでのミニマップの作り方は2通り

前置きが長くなってしまいましたが、ここから具体的な作り方について説明します。はじめに、Unityでのミニマップの作り方は主に2通りあります。

  1. カメラのみを使う方法:
    とても簡単に作ることができる。しかし枠のデザインなどはできない。
  2. カメラの映像をRender Textureに投影し、UIで表示する方法:
    1.よりも少し手間がかかるが、好きな形に切り抜いたり枠を作ったりできる。

それでこのページをご覧の方は特に説明しなくても1.のやり方は分かると思うので、ここでは2.の方法について説明していきます。

Render Textureの作成

ではまずRender Textureを作成します。Render Textureというのはカメラで撮影した映像を映せる特殊なテクスチャです。

Textureフォルダに「MiniMap」という名前で新しいRender Textureを作りましょう。設定は特にいじる必要はないです。

ミニマップ用カメラの作成

次にミニマップ用のカメラを作ります。新しいカメラを作成し、名前を「MiniMapCamera」にしたら下の図のように設定してください。

ミニマップ用カメラの設定

そうしたらデフォルトで付いているAudio Listenerコンポーネントを削除しておいてください。

ミニマップ用画像の作成

次にミニマップの枠画像と、マスク用画像(つまり表示を丸く切り抜くための画像)を作ります。以下に素材を添付しておきますので、自作できない方は試しに使ってください。

ミニマップの枠画像 マスク用画像

ミニマップ用UIの作成

最後に実際にミニマップを表示するためのUIを作っていきます。次の手順で設定を行ってください:

  1. まず新しいCanvasを作り、その中に枠画像のImageを作ります。
  2. 1.のImageの子としてマスク画像のImageを作ります。そしてUIのMaskコンポーネントをアタッチし、「Show Mask Graphic」をOFFにします。
  3. 2.のImageの子としてRaw Imageを作ります。Textureに「MiniMap」を設定してください。

これで作業完了です。下のGIFのようなミニマップができればひとまずOK!

完成したミニマップ

ただし、まだこれで完成ではありません。次のページでもうひと手間加えます。

次のページ→ミニマップの作り方2