CinemachineのAimをComposerに設定して対象を見続けるカメラを作る方法をまとめます。
- 2019/11/26 追記
- はじめに
- Window Guideを表示・非表示にする
- 初期設定のまま再生してみる
- Tracked Object Offsetで対象の中心位置を調整する
- Soft Zoneを設定してカメラをピッタリ追従させる
- Dead Zoneを設定して一定範囲内はカメラを追従させないようにする
- Dead ZoneやSoft Zoneの中心位置を変える
- 対象がこれから動く位置を予測してカメラを動かすLookahead
- 参考
Unity2018.4.0
Cinemachine2.2.9
2019/11/26 追記
誤りをご指摘いただいたのでSoft ZoneとDead Zoneの説明を修正いたしました。
ご指摘いただきありがとうございます。
はじめに
この記事では、CinemachineのVirtual CameraのAimをComposerに設定した時の挙動について説明します。
Virtual CameraのLook Atには注視する対象をアサインします。
説明の便宜上、Followには何もアサインしない状態にしておきます。
またFollowに何も設定しないとカメラの位置は変化しないため、
対象が良い感じに見える位置にVirtual Cameraの位置を設定しておきます。
なお、Cinemachineの基本的な使い方やVirtual Cameraの設定方法は本記事では説明しません。
これらは以下の記事にまとめていますので、必要に応じて参照してください。
Window Guideを表示・非表示にする
Composerでは、「対象を画面のこの位置に映す」とか「画面のここまでは対象がはみ出さないようにする」といったように、スクリーン座標ベースの設定値を使用します。
設定を行う際にはVirtual CameraのGame Window GuidesをONにしてこれらの設定値を可視化しておきます。
初期設定のまま再生してみる
さてこれからいろいろ設定値を変えてみますが、まずは初期設定のまま再生してみます。
カメラが回転して対象を追っていることが確認できました。
Tracked Object Offsetで対象の中心位置を調整する
前節の設定ではカメラの注視点がキャラクターの足になってしまっています。
これを補正するには、Tracked Object OffsetのYの値を調整します。
これによりカメラがキャラクターの顔あたりを注視するようになりました。
Soft Zoneを設定してカメラをピッタリ追従させる
さてこれまでの設定ではカメラは対象に少し遅れて追従していきます。
対象にピッタリと追従させるには、Soft Zoneを設定します。
Soft Zoneとはガイドでいうところの青い部分のことで、このゾーンに対象が入ると対象が後述のDead Zoneに入るようにカメラが動きます。
対象にカメラをピッタリと追従させるには、Soft Zone WidthとSoft Zone Heightをゼロにします。
これでカメラがピッタリ追従するようになりました。
Dead Zoneを設定して一定範囲内はカメラを追従させないようにする
次に、対象が画面の一定範囲内から出るまではカメラを追従させない設定にしてみます。
Dead Zoneとはガイドでいうところの青い部分に囲まれた透明な範囲のことで、
対象がこのゾーン内に収まっているうちはカメラは動きません。
Soft Zone WidthとHeightは0.8に、Dead Zoneはそれぞれ0.5に設定します。
これによりDead Zoneの範囲ではカメラが対象を追従しないようになりました。
Dead ZoneやSoft Zoneの中心位置を変える
Screen XやScreen YをいじるとDead ZoneやSoft Zoneの中心位置が変わります。
また対象がDead Zoneの中心に来るようにカメラも回転します。
Soft Zoneの位置だけを変えるにはBias XやBias Yといったパラメータを編集します。
対象がこれから動く位置を予測してカメラを動かすLookahead
Lookaheadとは「予測」のことです。 Lookahead Timeを設定すると、対象の動きを基に、設定した時間後の対象の位置を予測して、それを基にカメラの位置を計算します。
自分で操作を行うゲームの場合は少し先の状況が見えていたほうが操作性が良いので、そのような場合に使うようです。
ただしあくまで未来のことを予測しているため、対象が不規則に動き回るような動きをする場合にはカメラもきれいに動きません。