今回、Unity標準機能化の動きに合わせて無料で使用出来るようになったCinemachine を実際に触ってみました。
カメラの動きをコントロールする
Cine.machineはカメラの動きをコントロールするアセットみたいです。
この機能は、パンやティルト、ドリーのような動きというよりは、任意の欲しいカットを用意し、それに向けてカメラワークをブレンドさせていく感じになります。
このカットとは、注目したいキャラクターをカメラのどの範囲に置くのか、また何処から見るのか…といったイメージです。
例えば下の場合のように注目させたいパーツがある場合、対象と範囲を設定すれば、範囲の外に出ないようにカメラを動かしてくれます。
あとは複数のカットをつなぎ合わせてブレンドすると、こんな感じで動いてくれます。
簡単な使い方
まずはChinemachineのセットアップ。
- Chinemachine > Create Virtual Cameraを選択します。
- Autogen_cinemacihneRuntimeのオブジェクトのDefault Cameraには、動かしたいカメラを設定します。
カットの用意
- CinemachineVirtualCameraの位置を、カメラを置きたい位置に動かします。
シーンビューを動かした後、CinemachineVirtualCameraオブジェクトを選択してCtrl+Shift+Fキーで、現在のシーンビューカメラの位置と同期するので、便利です。 - 注目したいオブジェクトがあれば、ChinemacihneVirtualCameraのCreate Composer Assetを選択(もしくはComposer Settingsにセット)して、Composer Camera Targetに注目したいターゲットを指定します。
注目するオブジェクトのセット
場合によっては注目範囲も調整します。
ドリー的にカメラを動かす
Transposer SettingsかCreate Transposer Assetで設定を作成、あとは位置を同期したいオブジェクトのTransformをセットする感じです。
カメラ間のブレンド
カットの用意で作成したCinemachineVirtualCameraを、複製でも同じものを作るでも良いのでコピーします。
あとは、ゲーム再生時「アクティブなオブジェクトのプライオリティ値が低い(低い方がプライオリティが高い)順」に、カメラが移動します。
例えば新しいカメラのプライオリティを0、最初からあるカメラのプライオリティを1としておく場合、
- 起動時にプライオリティ0のカットが再生
- プライオリティ0のカットを非アクティブにすると、プライオリティ1のカメラに遷移
- プライオリティ0のオブジェクトをアクティブにすると、プライオリティ0のカメラに遷移
といった感じで動きます。
プライオリティ0がアクティブの状態でプライオリティ1をアクティブ・非アクティブにしても特に遷移しません。
ブレンドの設定
ブレンドの接地絵は、Cinemachine RuntimeのBlend Settingsで行うみたいです。
指定のカットから指定のカットへ遷移する際のカーブを設定すれば、ブレンドの感じを調整できます。ブレンド時間は調整できないみたいです。
(やるなら要スクリプトでウェイト調整)
中々面白いです。
関連
Cinemachine Base Rig from Cinemachine Imagery Ltd. on Vimeo.
動きのサンプル