URP 2Dで複数のカメラを使って描画する

今回はUnityのURP2Dで複数のカメラを使ってゲーム画面に表示させる方法を紹介したいと思います。
私は自分の2Dゲームでミニマップなどを表示したいときにこの方法を使います。
このような感じで疑似3Dとは別に見下ろし2Dのミニマップを表示させるのに活用しています。

複数のカメラを使ってみたい方は是非最後までお読み下さい。

Unityプロジェクトの作成

それでは新規プロジェクトを作成します。
今回はテンプレートで2D(URP)というものを選択します。
図のようにUnityHub新しいプロジェクトから2D(URP)を選択して下さい。

urp2dプロジェクト

URPについて

簡単にURP(Universal Render Pipeline)について書いておきます。
まず、レンダリングパイプラインとはグラフィックの描画にかかわる仕組みだそうです。
そしてUnityにはいくつかレンダリングパイプラインがあります。

  1. ビルトインレンダリングパイプライン
  2. SRP(スクリプタブルレンダーパイプライン)
    • HDRP
    • URP

1つ目のビルドインレンダリングパイプラインは従来のレンダリングパイプラインです。
2つ目のSRP(スクリプタブルレンダーパイプライン)はUnityの新しいレンダリングパイプラインです。
C#スクリプトによって色々細かい調整などが出来るそうです。
しかしゲーム開発する際に描画システムを自作するのは大変ということでUnity側で準備してくれているテンプレートがHDRPとURPだそうです。

URPの特徴は下記のようです。

  1. 描画の処理が軽い
  2. 様々なプラットフォームに対応している
  3. Shader Graph等の新機能

描画に関しては詳しく紹介されているサイトがありますので、是非そちらを参考にして下さい。

必要なものを設置していく

描画するゲームオブジェクトとLayer設定

プロジェクトが立ち上がったら描画するオブジェクトを置いていきます。
SquareとCircleの2つのオブジェクトを作りました。

次にCircleのLayerを変更します。
InspectorでLayerを選択し、Add LayerでSubLayerを新たに作りCircleのLayerに設定しました。

複数のカメラ

続いてCameraを新たに追加しましょう。
今回はSubCameraという名前にしました。
ポジションを設定します。
一旦X、Y、ZをそれぞれMain Cameraと同じ0、0、-10とします。

次にSubCameraのAudio Listenerコンポーネントを削除しておきます。
同じSceneに複数のAudio Listenerがあると注意的なものがログに表示されるのでやっておきましょう。

続いてSubCameraの方のRender TypeをOverlayに変更します。
そしてRenderRingのCulling MaskをEverythingからこのカメラで描画したいSubLayerに変更します。

MainCameraのInspectorにあるStackにSubCameraを追加します。

この段階でゲームシーンはこのようになっています。

黄色のCircleの中に黒い丸が表示されました。
この黒い丸がSubCameraで描画しているSubLayerのオブジェクトです。
黒くなっている理由はSubLayerにライトが無いためです。
Global Light 2DのLayerをSubLayerにすることで解消されます。

SubCameraの調整

SubCameraのInspectorを調整して色々変更していきたいと思います。
TransformのPostionの値を変更することでSubCameraの描画する位置が変わります。

またProjectionのField of Viewの値を変更することで拡大縮小のような事ができます。

このように2台のカメラで描画してみました。
色々な使い方ができると思いますので、皆さんもご自身のゲームにご活用下さい。

関連記事

最後までご覧頂いてありがとうございました。

2Dローグライトゲーム

2Dローグライトゲーム開発

Unity ヴァンパイアサバイバーズ風 講座