11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[#Unity][#Cinemachine]Timelineよりもお手軽に強力にカメラワークを作る、CinemachineBlendListCameraの使い方とハマリポイントについて

Last updated at Posted at 2022-07-05

概要

Unityでカメラの動きを制御するとき、Cinemachineは強力な選択肢の一つです。
特にTimelineと組み合わせた時、VirtualCameraをTimelineに配置していくだけでカメラワークを作ることが出来ますが、
数個のVirtualCameraをBlendしたいだけなのに…と言ったときに、Timelineよりお手軽に、使い方によってはTimelineよりも強力にカメラワークを構築することが出来る、CinemachineBlendListCameraコンポーネントの使い方と、ハマリポイントについて記します。

Cinemachineってなに?という方は

こちらの動画や記事を参考にください。

動作環境

Unity2021.3.5f1
Cinemachine2.8.6
PackageManagerからCinemachineをインストールしておいてください。

セットアップ

MainCameraにCinemachineBrainをアタッチし、
Hierarchyを右クリックから、BlendListCameraを選択してください。
image.png
今回はサンプル用に真ん中にキューブが置かれたシーンを構築しました。
image.png

CinemachineBlendListCameraコンポーネントについて

インスペクターで見てみると、BlendListCameraの子になっているVirtualCameraが2つインスペクター上で見えます。
image.png
エディタを再生すると、自動的に2つのVirtualCameraをブレンドしていることがわかります。
icon.gif

CinemachineBlendListCameraコンポーネントは、子になっている複数のVirtualCameraを、

  • 何秒でどのようにBlendするのか
  • そのVirtualCameraに切り替わった後どれだけ保持するか

を親のコンポーネントで決めることができます。
さらに、Followや、LookAt、ExtensionsといったVirtualCameraのパラメータのデフォルトの値を決めることが出来ます。
(子のVirtualCameraでFollowなどのパラメータをセットした場合はその値が優先して参照されるようです。)

VirtualCameraを追加し、カメラワークを作ってみる

使い方によってはTimelineよりも便利に強力に使えるポテンシャルがあるBlendListCameraを実際に動かしてみましょう。
まずはBlendListCameraの子のVirtualCameraを複製します。名前もリネームしておきました。
image.png

そしてBlendListCameraのインスペクターを見ると、下部のリストに複製したVCamが追加されてるのが確認できます。
その後、その上部のリストの+ボタンを押し、追加された要素の名前を複製したVCamに切り替えてください。
blendlistcam.png

その後、CM vcam3のPriorityを一時的にあげ、CM vcam3の位置や向きを好きなように変えてみましょう。
さらに先ほどのBlend inのモードなども変更し、Blend時間も変えてみましょう。
自分はこのように設定してみました。
image.png

実行してみると、もともとのカメラの動きに加え、最後に自分が設定したカメラの位置にブレンドされているのが確認できます。
vcam3.gif

これで基本的な使い方はわかったかと思います。

CinemachineBlendListCameraのハマリポイント

ここで、こちらの強力なコンポーネントのハマリポイントについてご紹介します。
先ほど設定したCinemachineBlendListCameraのインスペクターで、"CM VCam2"をドラッグし、一番上に持って行ってみてください。
すると、インスペクターの表示はこのようになります。
image.png
このインスペクターを見て期待する挙動として、

「CM vcam2からHold0秒で(つまり一瞬で)CM vcam1にブレンドし、ブレンドモードがCutなのですぐに切り替わり始め、1秒待機したのち、CM vcam3にブレンドモードHardOutで1.2秒かけてブレンドする。」

といったものになるかと思います。
ですが再生してみると以下のGIFで示す通り、最初にすぐにCM vcam1に切り替わるはずが、不自然に待つ時間が発生しています。これはインスペクター上から期待できる挙動ではありません。
vcam3err.gif
なんとなくお察しの方もいらっしゃるかもしれませんが、原因はもともとCM vcam2に対して設定されていたBlend時間が、インスペクター上では非表示になったにも関わらず、パラメータとして使われてしまっているのが問題です。
これは、インスペクターをDebug表示にし、当該のリストの要素をチェックすることでも確認できます。
cinedebg.png
これを解決するには、

  • 一時的にリストの2番目などの要素にし、ブレンドモードをCutにする
  • DebugモードからブレンドモードをCutにする

の2通りの解決方法があります。

とにかく一番最初の要素のVirtualCameraのBlendモードとBlend時間は非表示になるにも関わらず、そのBlend時間分待機してしまうので、Cutにしておかなければならない、というハマリポイントのご紹介でした。

まとめ

Timelineを使わなくても複雑なカメラワークをつけることができるようになる、
CinemachineBlendListCameraについて、簡単な使い方とハマリポイントをご紹介しました。
ぜひこのコンポーネントを使ってかっこいいカメラワークを制作してみてください。

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?