テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

【Unity】Cinemachineで複数のカメラを使用する

f:id:tsubaki_t1:20180923231727g:plain

今回はCinemachineで複数のカメラを使用する方法についてです。

 

 

複数のカメラを使う

ゲームを作成している時、複数のカメラを使用したいというケースが稀に存在します。例えば画面分割2Pプレイダンスシーンの背景カメラなど。

f:id:tsubaki_t1:20180923222302j:plain

普通はCameraを複数持てば良い話です。ただしCinemachineを使用する場合に少し考える必要があります。
というのもCinemachineはCinemachine Brainは最も優先度の高いVirtual Cameraを追跡する仕組みの為、複数のCinemachineBrainを用意すると全て同じVirtual Cameraを追跡してしまいます。

 

今回はその解決法についてです。

 

Timelineを使用している場合、複数のTrackを用意する

それがTimelineを使用している場合、複数のVirtual Cameraを使用するのは非常に単純、TimelineのTrackを複数用意すれば良いです。

f:id:tsubaki_t1:20180923223852j:plain

 

Timelineを使用しない場合

Timelineを使用しない場合、非常に面倒な手間が必要です。

  1. 同時に使用するCameraの数だけレイヤーを用意
  2. VirtualCameraのレイヤーを設定
    使用するレイヤーはカメラ毎にユニークな物を使用する
  3. CameraのCullingMaskでVirtualCameraが持っているレイヤーを指定
  4. 2と3をカメラの数だけ繰り返す

f:id:tsubaki_t1:20180923224614j:plain

f:id:tsubaki_t1:20180923224848j:plain

正直な所、この制御のためだけに31個しか使えないレイヤーを使うのはナンセンスな印象があります。多分開発者的には「映す対象とVirtualCameraが一致する」的な考えなんじゃないかなーと予想してますが…うーん?

 

なおCan I use 2 camera with Cinemachine Brain?にてCinemachineBrain.SetCameraOverride() を使用して独自にCinemachineBrainのアクセス先をオーバーライドする方法が紹介されていますが、APIがInternalなので使えません。
使えたとしても追加でカメラを制御するコードを記述する必要があります。正直これならCinemachineBrainのCullingMask使っている所を書き換えた方が楽かなという印象です。