【Unity】Cinemachine入門!スクリプトなしでカッコいいカメラワークを作る

Cinemachineを使うとあらゆるカメラワークを簡単な設定で作成できます。
ただし多機能で使いこなすのはなかなか大変なので、この記事ではまず簡単に使ってカメラワークを作ってみます。

Unity2018.4.0
Cinemachine2.2.9

Cinemachineの概要とセットアップ手順

Cinemachineはカメラを制御するためのUnityの公式アセットです。
ゲームを作るうえで必要なあらゆるカメラワークを簡単な設定で作成できます。

インストールはPackage Managerから行えます。
Window > Package ManagerからCinemachineと検索してインストールします。

f:id:halya_11:20190701005650p:plain

とりあえず使ってみる

それでは簡単なカメラワークを作ってみます。
まずは適当なシーンを用意します。

f:id:halya_11:20190701005847p:plain

今回はUnityちゃんを置いていますが、とりあえず何か置いてあればいいです。
シーンを作ったらMain CameraにCinemachine Brainというコンポーネントをアタッチします。

f:id:halya_11:20190701010335p:plain

次に空のGame Objectを作ってCinemachine Virtual Cameraをアタッチします。

f:id:halya_11:20190701010445p:plain

Virtual Cameraが作れたら、Virtual CameraのFollowとLook Atにカメラに映したいオブジェクトをアサインします。

f:id:halya_11:20190701010609p:plain

最後にVirtual CameraのBodyをTransposerに、AimをComposerに設定します。

f:id:halya_11:20190701010724p:plain

この状態で再生して対象のオブジェクトを動かすと、カメラがキャラクターをひたすら追いかけていくことが確認できます。

f:id:halya_11:20190701011033g:plain

調整は必要なものの、とりあえずキャラクターを追従するカメラワークが作れました。

Virtual Cameraとは何なのか?

前節ではCinemachine Virtual Cameraを空のGameObjectにアタッチし、Main CameraにCinemachine Brainをアタッチしました。

Cinemachineでは、このVirtual Cameraによりカメラの動きが計算されます。
そしてCinemachine Brainがアタッチされているカメラに対してその計算結果を反映します。

f:id:halya_11:20190701012243p:plain

これが基本的なCinemachineの仕組みです。

Virtual Cameraの基本 - BodyとAim

さてこのようにCinemachineではVirtual Cameraによって位置や回転(など)が計算されます。

このうち「位置」の計算は先ほど選択したBodyにより決まります。
今回選択したTransposerはFollowに設定したオブジェクトからの一定の位置を保ちながら移動する方式です。

f:id:halya_11:20190701012759p:plain

一方、「回転」の計算は先ほど選択したAimにより決まります。
今回選択したComposerはLook Atに設定したオブジェクトの方向を向くように回転する方式です。

f:id:halya_11:20190701012945p:plain

このようにCinemachineでは「Body」と「Aim」で「位置」と「回転」方法を決めてカメラワークを作っていきます。
今回でいえばTransposerとComposerにより「オブジェクトから一定の位置を保ちながらオブジェクトの方向を向く」カメラを作りました。

複数のVirtual Cameraを取り扱う

次に複数のVirtual Cameraを取り扱う方法について学びます。
シーン上に複数のVirtual Cameraが置いてある場合、Priorityが高く設定されているVirtual Cameraの計算結果だけが反映されます。

f:id:halya_11:20190701013747p:plain

そしてPriorityの高いVirtual Cameraが非アクティブになると、次にPriorityの高いVirtual Cameraの計算が反映されるようになります。
そしてこのとき、二つのVirtual Cameraの計算結果がブレンドされながら切り替わります。

f:id:halya_11:20190701014140g:plain

このように設定の異なる複数のVirtual Cameraを作り、ブレンドしながら切り替えていく、というのがCinemachineの基本です。

Bodyの種類一覧

さてここまでTransposerを使っていましたが、Bodyには他にも以下の種類が存在します。

名前 説明
Do Nothing 何もしない(カメラが動かない)
Transposer 対象からのオフセットを保つようにカメラが動く
Framing Transposer 対象をスクリーンの特定の位置に映すようにカメラが動く
基本的に2D(Orthographic)用
Orbital Transposer 対象を中心とした円上をカメラが動く
Tracked Dolly パスに沿ってカメラが動く
Hard Lock To Target Follow Targetと全く同じ位置にカメラが動く

一覧化しましたが、細かい挙動に関しては使うときに使うものだけ覚えればいいかと思います。

Aimの種類一覧

一方Aimには以下の種類が存在します。

名前 説明
Do Nothing 何もしない(カメラが回転しない)
Composer 対象からのオフセットを保つようにカメラが回転する
Group Composer 複数の対象がすべて映るようにカメラを調整する
POV ユーザ入力によりカメラが回転する
Same As Follow Target Follow Targetの回転値と同じように回転する
Hard Look At 常に対象がカメラの中央に映るように回転する

こちらも使うものだけ挙動を把握すればいいと思います。

まとめ

以上、Cinemachineの最初の一歩として簡単なカメラワークを作り、基本的な概念を学びました。
応用的な使い方は他の記事で解説していますので是非そちらもご覧ください。