URP 2Dで複数のカメラを使って描画する
今回はUnityのURP2Dで複数のカメラを使ってゲーム画面に表示させる方法を紹介したいと思います。
私は自分の2Dゲームでミニマップなどを表示したいときにこの方法を使います。
このような感じで疑似3Dとは別に見下ろし2Dのミニマップを表示させるのに活用しています。
複数のカメラを使ってみたい方は是非最後までお読み下さい。
Unityプロジェクトの作成
それでは新規プロジェクトを作成します。
今回はテンプレートで2D(URP)というものを選択します。
図のようにUnityHub新しいプロジェクトから2D(URP)を選択して下さい。
URPについて
簡単にURP(Universal Render Pipeline)について書いておきます。
まず、レンダリングパイプラインとはグラフィックの描画にかかわる仕組みだそうです。
そしてUnityにはいくつかレンダリングパイプラインがあります。
- ビルトインレンダリングパイプライン
- SRP(スクリプタブルレンダーパイプライン)
- HDRP
- URP
1つ目のビルドインレンダリングパイプラインは従来のレンダリングパイプラインです。
2つ目のSRP(スクリプタブルレンダーパイプライン)はUnityの新しいレンダリングパイプラインです。
C#スクリプトによって色々細かい調整などが出来るそうです。
しかしゲーム開発する際に描画システムを自作するのは大変ということでUnity側で準備してくれているテンプレートがHDRPとURPだそうです。
URPの特徴は下記のようです。
- 描画の処理が軽い
- 様々なプラットフォームに対応している
- 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台のカメラで描画してみました。
色々な使い方ができると思いますので、皆さんもご自身のゲームにご活用下さい。
おすすめUnityオンライン学習
一人でゲーム開発が不安な方はオンラインスクールで学習すると効率が良いと思います。
以下に当てはまる人は検討してみると良いかもしれません。
「入門書をの次に何をしたらいいの?」
「疑問や問題を一人で解決出来ない。。」
「ゲームを完成させる自信がない。。」
「気軽に質問できる環境が欲しい。。」
自分で学習することに限界を感じたら
オンライン学習しましょう!
Udemy
テックアカデミー
テックスタジアム
ゲーム開発に特化したオンラインスクールですので、Unityはもとより、他のゲームエンジンやゲーム業界に興味がある方にはオススメです。
デジハリONLINE
関連記事
UnityでCSVを活用したメッセージウィンドウの作り方
ゲーム開発では、プレイヤーに重要な情報を伝えるためにメッセージウィンドウを頻繁に使います。 しかし、ゲーム内で表示するメッセージが増えてくると、それらを一つ一つ管理していくのは非常に大変な作業になります。 メッセージの内 […]
Unity2D ドット絵の簡単なアニメーションを作ってみる
Unity2Dで簡単なドット絵のアニメーションを作成します。スプライトを切り替えることでプレイヤーが歩いているように見えるアニメーションを作成してみます。
この方法を応用することでキャラクターに色んな動きや表示を付け加えることができると思います。
ChatGPTの指示通りUnityゲームを作ってみる
最近ではChatGPTを始め様々な大規模言語モデルの対話型AIが公開されていますね。
そこで今回はChatGPTの指示に従ってゲームを作ってみる実験をしてみます。
Unityで9-sliceテクニックを使った効果的なUI作成方法
UI作成時に非常に便利なテクニック9-sliceをやってみます。
とても簡単に使える技です。
Transform.RotateとQuaternion.Eulerでオブジェクト回転
Unity2Dで簡単なゲームオブジェクトの回転を実装してみたいとおもいます。
Transform.RotateとQuaternion.Eulerの二種類の回転方法を実験します。
ルーレットとか、方位をコンパス。またはプレイヤーがやられた時に回転させるなどに使えそうです。
Unity2Dで背景の無限スクロールを実装する
色んなゲームで背景がスクロールする仕組みは使われています。
今回はタイル状の背景を並べて上下左右に無限にスクロールする仕組みを作ってみたいと思います。
最後までご覧頂いてありがとうございました。