Unity Cinemachine とタイムラインのチュートリアル
Cinemachine は、開発者にプロフェッショナルなカメラ制御を提供し、映画のようなカットシーンを作成する機能を強化する Unity のパッケージです。
このチュートリアルでは次のトピックについて説明します。
- シネママシンのインストール
- 三人称カメラのセットアップ
- タイムラインカットシーンの作成
シネママシンのインストール
Cinemachine をインストールするには、次の手順に従います。
- Unity で、[ウィンドウ] -> [パッケージ マネージャー] に移動します。
- パッケージを「Unity レジストリ」に変更します
- リストから "Cinemachine" を選択し、クリックします "Install"
これで、Cinemachine を使用する準備が整いました。
三人称カメラのセットアップ
以下では、Cinemachine の仮想カメラを使用して三人称カメラを設定する方法を示します。
仮想カメラは Unity カメラの軽量バージョンであり、それ自体ではレンダリングされず、メイン カメラの参照点としてのみ使用されます。
このチュートリアルの例として、カメラ衝突を設定せず、プレーヤー階層内でカメラを移動しない場合を除き、三人称コントローラー を使用します。
ご覧のとおり、プレーヤーは動いていますが、カメラは追従しません。
Cinemachine を使用して三人称カメラをセットアップするのは非常に簡単です。
- GameObject -> Cinemachine -> Virtual Camera に移動して、新しい仮想カメラを作成します
- 仮想カメラに名前を付けます "TPS Camera"
- TPS カメラを選択し、CinemachineVirtualCamera で Follow 変数を割り当てます (私の場合、それは "CameraParent" オブジェクトになります。これはプレーヤー階層内にあり、垂直方向の見た目の回転を表します)
- 本体の値を次のように設定します "3rd Person Follow"
- [タグを無視] を "Player" に設定し、プレーヤーのルート オブジェクトを選択してそのタグを "Player" に設定します (プレーヤー階層に子コライダーがある場合は、それらのタグも "Player" に変更してください)
- 満足のいく結果が得られるまで、CinemachineVirtualCamera の他の値 (Camera Distance、Camera Side、Shoulder Offset、Damping など) を調整します。
- CameraParent の Aim 値を に設定します。 "Do nothing"
これで、カメラがプレーヤーを追跡するようになります。
タイムラインカットシーンの作成
ここでは、Unity's タイムラインを使用してカットシーンを構成する方法を説明します。
タイムラインは、開発者がカメラをアニメーション化するだけでなく、既存のアニメーション (キャラクターの歩行など) に加えて、イベントや信号を順番に配置してカットシーンを作成できるようにする組み込みエディターです。
Cinemachine パッケージは、仮想カメラを切り替える機能など、タイムライン エディタにいくつかの追加オプションを追加します。
カットシーンを作成するには、次の手順に従います。
- 新しいゲームオブジェクトを作成して呼び出します "TimelineManager"
- [ウィンドウ] -> [シーケンス] -> [タイムライン] に移動してタイムライン ウィンドウを開きます。
- "TimelineManager" オブジェクトを選択すると、タイムライン ウィンドウに Director コンポーネントとタイムライン アセットを作成するオプションが表示されるので、それをクリックします。
- Director コンポーネントと Timeline アセットを作成すると、空の Timeline ウィンドウが表示されます (編集できるように TimelineManager オブジェクトが選択されていることを確認してください)。
- ウィンドウを右クリックして、タイムラインへのコンポーネントの追加を開始できます。
ご覧のとおり、タイムライン ウィンドウにはさまざまなオプションがあります。
- トラック グループ - これはタイムライン アクションを含めることができるグループで、整理に役立ちます。
- Activation Track - これは、設定された時間枠内のみアクティブになるオブジェクトを定義します。
- アニメーション トラック - 設定された時間枠中に特定のアニメーションを再生します。
- オーディオ トラック - 設定された時間枠中に特定のオーディオを再生します。
- Control Track - クリップがゲームオブジェクト上の時間関連要素を制御するトラック。
- Signal Track - これにより、特定の時間に特定のゲーム オブジェクトに対してさまざまなアクションを実行できます (例: タイムラインが特定のフレームに達したときにプレイヤーの移動スクリプトをアクティブにしたり、特定の関数を呼び出したりするなど)
- 再生可能トラック - クリップがカスタム再生可能であるトラック。
- Cinemachine Track - これにより、複数の cinemachine 仮想カメラ間のブレンドが可能になります。
このチュートリアルでは、アニメーション トラック と シグナル トラック のみを使用します。
設定
- 別の仮想カメラを作成し、"CutsceneCamera" という名前を付け、その "Priority" 値を "TPS Camera" より 1 つ上のレベルに設定します (例: 11)
- プロジェクトビューで右クリック→「作成」→「Signal」と名前を付けます。 "DisablePlayer"
- "DisablePlayer" 信号を複製し、名前を次のように変更します。 "EnablePlayer"
- シーン内に新しいゲームオブジェクトを作成し、名前を付けます "SignalReceiver"
- SignalReceiver コンポーネントを "SignalReceiver" オブジェクトにアタッチします
- "Add Reaction" を 2 回クリックします
- "DisablePlayer" を最初の反応に割り当て、"EnablePlayer" を 2 番目の反応に割り当てます。
"DisablePlayer" は、カットシーン カメラをアクティブにし、プレーヤー カメラとプレーヤー コントロール スクリプトを非アクティブにし、タイムラインの先頭に配置されます。
"EnablePlayer" は、カットシーン カメラを無効にし、プレーヤー カメラとプレーヤー コントロール スクリプトをアクティブにし、タイムラインの最後に配置されます。
- (+) をクリックしてリアクション スロットを追加し、スクリプトまたはコンポーネントをアクティブ化/非アクティブ化する必要があるオブジェクトを割り当てます。
ヒント: 逆の信号を作成するには、"DisablePlayer" の反応を設定してから、歯車アイコン -> [複製] をクリックし、信号を "EnablePlayer" に変更して、チェックボックスを反転します。
- "TimelineManager" オブジェクトを選択し、タイムライン ウィンドウで右クリック -> 信号トラックを選択して新しい信号トラックを追加し、それに "SignalReceiver" オブジェクトを割り当てます。
- タイムラインの先頭に "DisablePlayer" 信号アセットをドラッグ アンド ドロップし、カットシーンを終了したいフレームに "EnablePlayer" をドラッグ アンド ドロップします。
これにより、プレーヤー コントローラー スクリプトとカメラが最初は非アクティブになり、タイムラインが最後に達すると再びアクティブになります。
最後に、簡単なカメラアニメーションを作成します。
- [タイムライン] -> [アニメーション トラック] を右クリックし、"CutsceneCamera" を割り当てます (Animator コンポーネントが存在しない場合は、オブジェクトに Animator コンポーネントを追加するように求められます)。
- 録音ボタンをクリックします
- "CutsceneCamera" を少し移動してキーフレームが適用され、タイムライン フレーム ハンドルを最後まで移動し、最後にカメラを新しい位置に移動して、[記録の停止] をクリックします。
再生ボタンを押して結果を見てみましょう。
ゲーム開始時にカットシーンが再生されます。