キャラが走ったときに別のカメラワークにしたい場合はどうすればいいの?
Cinemachine State Driven Cameraを用いれば良い感じにできるわ!
Cinemachineには、キャラクターのアニメーション状態に応じてカメラを切替えるCinemachine State Driven Cameraが存在します。
参考:Cinemachine State Driven Camera | Cinemachine | 2.6.0
これを用いると、キャラクターが走っている時や倒れている時など、アニメーションに応じてカメラワークを切替えることができるようになります。
このようなカメラ切り替えはスクリプトで管理することも可能ですが、動きに応じて決まったカメラの変化をさせたい場合はCinemachine State Driven Cameraを使うと楽でしょう。
本記事では、Cinemachine State Driven Cameraの使い方を解説し、実際にキャラクターに応じたカメラワークを変化させるようにしていきます。
この作品はユニティちゃんライセンス条項の元に提供されています
- Unity2021.2.0f1
- Cinemachine2.8.2
目次 非表示
前提条件
三人称視点でキャラクターを操作できるシーンがセットアップされているものとします。
また、Cinemachineパッケージがインストールされているものとします。
インストール方法が分からない方は、以下記事をご覧ください。
Cinemachine State Driven Cameraの配置
トップメニューからGameObject > Cinemachine > State-Driven Cameraの順に選択します。
すると、CM StateDrivenCamera1という名前のバーチャルカメラが配置されます。これがCinemachine State Driven Cameraとなります。
Cinemachine State Driven Cameraの子階層には、CM vcam1という名前のバーチャルカメラが1つだけ配置されます。
この階層に各アニメーション毎に切替えたいカメラワークの分だけ子バーチャルカメラを追加する必要があります。
各アニメーション毎のカメラワーク作成
各カメラワークをCM StateDrivenCamera1の子階層に配置していきます。
例では、通常時と走行時の2種類のカメラワークを切替えることとします。子バーチャルカメラを2つ配置し、それぞれでキャラクターを追従させるカメラワークの設定を行います。
走行時はカメラを少し引いて、手振れ演出をつけるようにしました。
動画では子バーチャルカメラのFollowとLook Atを設定していませんが、これは親バーチャルカメラ側のFollowとLook Atの設定を引き継ぐためです。
子バーチャルカメラ毎に個別の追従対象を設定したい場合は、Follow OverrideとLook At Override項目をそれぞれ設定してください。
Cinemachine State Driven Cameraの設定
子バーチャルカメラの設定が済んだら、親のCM StateDrivenCamera1オブジェクト側のバーチャルカメラを設定していきます。
追従対象の設定
先ほど配置したCM StateDrivenCamera1オブジェクトのCinemachineStateDrivenCameraコンポーネントのFollowに追従対象を、Look Atにカメラの照準合わせ対象を指定します。
このようにすることで、すべての子バーチャルカメラのFollowとLook Atに同じ設定が受け継がれます。
子バーチャルカメラ毎に独立した追従対象を指定したい場合は、子バーチャルカメラ側のFollowとLook Atを設定します。親と子両方に設定されている場合は、子の設定のほうが優先されます。
アニメーターの指定
アニメーションによってカメラ切り替えするためには、CinemachineStateDrivenCameraのAnimated Targetに対象のアニメーターを設定する必要があります。
例では、ユニティちゃんのアニメーターを指定することとします。
必要に応じて、アニメーターのLayerを設定します。
アニメーション毎のバーチャルカメラ設定
CinemachineStateDrivenCameraの以下部分で各アニメーション毎のバーチャルカメラを定義していきます。
追加する際、+ボタン > All Unhandled Statesの順に選択すると、アニメーターで使われているステートを自動的に追加してくれます。
各列の設定項目の意味は次の通りです。
State | アニメーターのステート |
Camera | ステートに割り当てるバーチャルカメラ。 (none)の時はデフォルトのバーチャルカメラ(最初)となる。 |
Wait | カメラが切り替わるまでの待ち時間(秒) |
Min | カメラが持続する最小時間(秒) |
例では、走行アニメーション時のみ走行用のカメラワークを設定し、それ以外はデフォルト(通常時のカメラワーク)とします。
実行結果
ここまでの手順を成功させると、アニメーション毎に子バーチャルカメラが切り替わるようになります。
さいごに
キャラクターのアニメーション毎の切り替えは、Cinemachine State Driven Cameraを用いると簡単に実現できます。
スクリプトからバーチャルカメラを切替える方法と比べると、複数のバーチャルカメラをグループ化して管理できるというメリットがあります。
工夫次第で面白い演出が作れるかもしれません。