【Unity】Cinemachineで複数のカメラを使用する
今回はCinemachineで複数のカメラを使用する方法についてです。
複数のカメラを使う
ゲームを作成している時、複数のカメラを使用したいというケースが稀に存在します。例えば画面分割2Pプレイやダンスシーンの背景カメラなど。
普通はCameraを複数持てば良い話です。ただしCinemachineを使用する場合に少し考える必要があります。
というのもCinemachineはCinemachine Brainは最も優先度の高いVirtual Cameraを追跡する仕組みの為、複数のCinemachineBrainを用意すると全て同じVirtual Cameraを追跡してしまいます。
今回はその解決法についてです。
Timelineを使用している場合、複数のTrackを用意する
それがTimelineを使用している場合、複数のVirtual Cameraを使用するのは非常に単純、TimelineのTrackを複数用意すれば良いです。
Timelineを使用しない場合
Timelineを使用しない場合、非常に面倒な手間が必要です。
- 同時に使用するCameraの数だけレイヤーを用意
- VirtualCameraのレイヤーを設定
使用するレイヤーはカメラ毎にユニークな物を使用する - CameraのCullingMaskでVirtualCameraが持っているレイヤーを指定
- 2と3をカメラの数だけ繰り返す
正直な所、この制御のためだけに31個しか使えないレイヤーを使うのはナンセンスな印象があります。多分開発者的には「映す対象とVirtualCameraが一致する」的な考えなんじゃないかなーと予想してますが…うーん?
なおCan I use 2 camera with Cinemachine Brain?にてCinemachineBrain.SetCameraOverride()
を使用して独自にCinemachineBrainのアクセス先をオーバーライドする方法が紹介されていますが、APIがInternalなので使えません。
使えたとしても追加でカメラを制御するコードを記述する必要があります。正直これならCinemachineBrainのCullingMask使っている所を書き換えた方が楽かなという印象です。