【Unity】【Cinemachine】Virtual CameraのTransposerで対象を追いかけるカメラを作る

CinemachineのVirtual CameraのTransposerの使い方をまとめます。

Unity2018.4.0
Cinemachine 2.2.9

はじめに

この記事では、CinemachineのVirtual CameraのBodyをTransposerに設定した時のモードについて説明します。

f:id:halya_11:20190623223028p:plain

Transposerはよく使うにもかかわらずモードがたくさんありややこしいので一つずつ節を分けて説明していきます。

また、Transposerは主にオブジェクトを追従するときに使われるので、
説明の簡易化のため、AimはComposerにした状態にして対象オブジェクトを注視する状態にしておきます。

f:id:halya_11:20190623223146p:plain

なお、Cinemachineの基本的な使い方やVirtual Cameraの設定方法は本記事では説明しません。
これらは以下の記事にまとめていますので、必要に応じて参照してください。

light11.hatenadiary.com

カメラマンが被写体を追いかけるような動き - Simple Follow With World Up

まず、Binding ModeをSimple Follow With World Upにしてみます。
これは一言でいうと「人間のカメラマンが被写体を追いかけるような動き」を表現できます。

f:id:halya_11:20190623224041g:plain

カメラが被写体を追いかける際のルールとして、一定の高さと距離を保ちつつ追いかけます。
言い方を変えると、自身のY座標とZ座標を被写体から見て一定に保ちます。
そしてこの時のY座標とZ座標をOffsetとして指定することができます。

f:id:halya_11:20190623223526p:plain

X値はこのモードでは使わないので変更できません。
また、Y DampingやZ Dampingの値を大きくするとカメラが少し間を開けながら追従するようになります。

キャラを常に特定の方向からのみ映す - Lock To Target

前節の設定では、キャラの正面が見えたり背面が見えたりしていました。
これに対して例えば常にキャラを一定の方向から映すようなカメラを作ることを考えます。

f:id:halya_11:20190623225922g:plain

この場合、Binding ModeをLock To Targetに設定する必要があります。

f:id:halya_11:20190623230151p:plain

Follow Offset値の設定により「対象のローカル座標から見てどの位置にカメラを配置するか」が決定します。
基準が対象のローカル座標なので、カメラは常に対象を同じ方向から映す結果になります。

Lock To TargetしつつもカメラをRollさせたくない - Lock To Target No Roll

前節の設定の場合、対象がZ軸回転をするとカメラも回転します。

f:id:halya_11:20190623234154g:plain

このような進行方向に対する回転をRollといいます。
フライトシミュレーションのようなゲームならこれでもいいのかもしれませんが必要ないケースは多そうです。

そんな時にはBinding ModeをLock To Target No Rollに設定するとRollしなくなります。

f:id:halya_11:20190623234443g:plain

Follow Offset値の設定方法はLock To Targetと同じです。

f:id:halya_11:20190623234600p:plain

Lock To TargetしつつもカメラをPitchやRollさせたくない - Lock To Target With World Up

Lock To TargetやLock To Target No Rollでは、対象がX軸回転するとカメラも回転します。

f:id:halya_11:20190624002159g:plain

このような進行方向に対して横方向の軸に対する回転をPitchといいます。
Binding ModeをLock To Target With World UpにするとPitchもRollもしなくなります。

f:id:halya_11:20190624002406g:plain

Lock To Targetしつつも対象の回転をカメラに影響させない - Lock To Target On Assign

Lock To TargetやLock To Target No Roll、Lock To Target With World Upでは対象がY軸回転するとカメラも回転します。

f:id:halya_11:20190624003441g:plain

このような進行方向に対して縦方向の軸に対する回転をPitchといいます。
Binding ModeをLock To Target With World UpにするとPitchもRollもしなくなります。

f:id:halya_11:20190624004029g:plain

注意点として、Lock To Target On AssignはGameObjectをFollowにアサインしたときや
Virtual Cameraのenabledがtrueに切り替わった時にFollow Offset値が適用されます。

カメラがずっと同じ方向を向き続ける - World Space

Binding ModeをWorld Spaceにするとカメラがずっとワールド空間の同じ方向を向き続けながら対象を追いかけます。

f:id:halya_11:20190624010243g:plain

まとめ

以上、CinemachineのVirtual CameraのTransposerの使い方をまとめました。

こう見るとBinding Mode毎の違いは些細な違いであるようにも見えますが、
理想のカメラワークを作るにはそれぞれの違いをきちんと理解しておく必要があります。

関連

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

light11.hatenadiary.com

参考

docs.unity3d.com