少し引っかかったのでメモ。
例は2Dだけど3Dにも適用できるはず。
ミニマップっていうのはコレのこと。
手順
仕組みはすごく単純です。ミニマップ用のカメラを用意して、カメラでレンダリングされたイメージをテクスチャとして持っておき、RawImageで表示するというだけです。
- ミニマップ用のカメラにだけ写るオブジェクトを作る
- RenderTextureを用意する
- ミニマップ用のカメラを用意し、TargetをRenderTextureに設定する
- CanvasにRawImageを追加してTextureをRenderTextureに設定する
ミニマップ用のカメラにだけ写るオブジェクトを作る
ミニマップに表示したいオブジェクトの子要素として新しいGameObjectを作ります。GameObjectに各種Rendererをアタッチしてカメラに写るようにします。
また、GameObjectのLayerにミニマップ用のレイヤーを追加して設定しておきます。
メインカメラのCullingMaskをからミニマップ用のレイヤーのチェックを外しておきます。
RenderTextureを用意する
プロジェクトビューからAssetsに新しいRenderTextureを追加します。RenderTextureのサイズは表示したいミニマップの解像度を設定します。(今回の例では表示領域が400x300と決まっているので400x300に設定)
ミニマップ用のカメラを用意し、TargetをRenderTextureに設定する
ミニマップ用のカメラを作ります。このカメラにはミニマップ用のレイヤーのみが写るようにCullingMaskを設定します。
TargetTextureを作成したRenderTextureに設定しておきます。このカメラでレンダリングした結果がRenderTextureに保持されるようになります。
ちなみに、カメラのアスペクト比はRenderTextureのサイズで決まるようです。
CanvasにRawImageを追加してTextureをRenderTextureに設定する
UIオブジェクトを追加し、RawImageをアタッチします。RawImageのTextureに作成したRenderImageを設定します。
まとめ
- ミニマップ用のカメラを用意しレンダリング結果をRenderTextureに描き出す
- RawImageでRenderTextureを表示する
0 件のコメント:
コメントを投稿