top of page

LessonEX 複数のカメラを扱う

EX-1 RenderTexture

 ゲームには「どこからどこまでをゲーム画面に描画するか」を指定する、メインカメラがあります。メインカメラに映ったオブジェクトが実際のゲーム画面に表示されます。

 では複数のカメラを作成して、そのカメラに映ったものを描画するにはどうすれば良いのでしょうか。Unityにはメインカメラとは別でサブカメラを作成して、サブカメラに映ったものをテクスチャとして表示する機能があります。サブカメラを使ってステージを上から見た光景をゲーム内に表示してみましょう(​深く知りたい方はHLSLシェーダーの魔導書のオフスクリーンレンダリングのページも参照してください)

​ まずは適当にオブジェクトを置いたシーンと、サブカメラの内容を表示するためのモデルを用意してください。

 ヒエラルキーから「Camera」を選択してカメラを追加してください。

 作成したカメラの座標や回転を調整して、上から見る形にしてください。シーンビューの右下にプレビューがあるため参考にしましょう。

 サブカメラの内容を出力するためのRender Textureを作成しましょう。

​ プロジェクト内で右クリックして「Create」→「Render Texture」を選択してください。

 RenderTextureにはサイズや描画方法などを設定する項目があります。カラーフォーマットやサイズを指定する点はDirectXの内容と変わりません。

 今回は何も変更しなくて構いません。

 サブカメラのTargetTextureに作成したRenderTextureをドラッグ&ドロップしてください。これでサブカメラの内容がRenderTextureに表示されるようになります。

 3Dアクションゲーム編6-2で解説していますが、サウンド処理における「耳」の役割を果たすAudio Listenerは同一シーン上に2つ以上存在することができません。カメラには自動的にAudio Listenerがアタッチされているため、サブカメラのAudio Listenerを外しておきましょう。

 コンポーネント右上の3つの点をクリックして「Remove Component」を選択してください。

 Audio Listenerが複数ある状態でゲームを実行すると「オーディオリスナーが2つあるよ」という警告が出るので注意しましょう。ちなみにオーディオリスナーは1つを残して無効化されます。

 RenderTextureの内容を表示したいオブジェクトにRenderTextureをドラッグ&ドロップすると、自動でマテリアルが作成されます。

 Materialsフォルダ内にはRenderTextureを表示するためのマテリアルが作成されています。お好みで調整してください。

 ゲームを実行するとサブカメラの内容がRenderTextureに表示されています。

 モデルを動かすとRenderTextureの表示内容も更新されます。確認してみましょう。

 他にもRenderTextureを使うことで面白い演出を作ることができます。

​ 適当なオブジェクトを選択して「Layer」→「Add Layer…」を選択してください。

 空いている場所に適当なレイヤー名を入れてください。名前を指定することでレイヤーとして使えるようになります。

 再度適当なオブジェクトを選んで、追加したレイヤーを選択してください。

 メインカメラを選択してCulling Maskから先ほど追加したレイヤーのチェックを外してください。これでメインカメラに描画されなくなります。

 この状態で実行するとメインカメラには映らず、サブカメラには映るオブジェクトが完成します。メインカメラとサブカメラのCulling Maskの設定を変えることでこのように不思議な演出を作ることができます。

 RenderTextureの内容をオブジェクトではなくUIに表示する方法も解説します。

 「UI」→「Raw Image」を追加してください。ImageではなくRaw Imageなので注意しましょう。

 Raw ImageはSpriteではなくTextureを表示することができます。例えば今回のようにカメラの内容であったり、スクリプトで動的に生成した画像であったりと、特殊なものを表示する時に使います。基本はImageを使うので、必要な時に思い出す程度でOKです。

​ あとはRenderTextureをRaw ImageのTextureにドラッグ&ドロップするだけでOKです。

 これでサブカメラの内容をUIに表示することができました。

​ カメラを複数配置することで面白い演出を作ることができますが、当然描画回数は増えるため使いすぎに注意しましょう。使用しないカメラは非アクティブにすることで描画負荷を軽減できます。

河原電子ビジネス専門学校
​ゲームクリエイター科

bottom of page