poi’s tech blog

3D多人数同時接続型球体アクション成人向けゲーム開発のためのアイデア、ナレッジ

カメラをスクリプトとCinemachineでハイブリッド制御

Unity 2019.3.14f1

キャラクター移動時のカメラワークをスクリプトで制御していて、
スライムの攻撃を食らった際のカットシーンのカメラワークはTimelineのAnimation Trackで実現しようとしていた。

しかし、今のカメラの地点からキャラクターのいる地点にカメラが寄っていくアニメーションを作ろうとしたところ、Preview時とPlay時に再生するアニメーションで差異が出てうまく作れなかった。
(Animation Track の Track Offsets は Apply Scene Offsets を選択)

そのためキャラクター移動時はスクリプトで制御、TimelineのカメラワークはCinemachineで制御するようにした。

f:id:poipoipoip:20210303211734g:plain
Virtual Cameraが切り替わる様子

Main CameraにCinemachineBrainコンポーネントを設定して、Virtual Camera1を配置した時点でMain Cameraの位置がVirtual Camera1の位置と同期?してしまうため、Virtual Camera1の位置をスクリプトで制御するように変更。

Timeline再生前にスクリプトのカメラワーク制御を止めるように変更。

Humanモデルの子にVirtual Camera2を配置し、カメラを寄せたい位置にポジションを合わせる。

f:id:poipoipoip:20210303212731p:plain
Humanの子にするので常にHumanにVirtual Camera2がくっつく

Timeline上でVirtual Camera1からVirtual Camera2に切り替わるようにTrackを配置したら完了。

f:id:poipoipoip:20210303212938p:plain
作成したChinemachine Track上にVirtual CameraインスタンスをドロップでTrackが作成される。