CinemachineでCamera OffsetでCinemachineで計算したカメラ位置を上書きする方法です。
Unity2018.4.0
Cinemachine2.2.9
Cinemachine Camera Offset?
Cinemachine Camera OffsetはVirtual Cameraで使えるExtensionsの一種です。
Virtual CameraはBodyの設定に基づいてカメラの位置を調整します。
またAimの設定によってカメラの回転を調整します。
AimをGroup Composerにした場合などにはAimによって位置も調整されます。
さらにそのあと、Noiseが設定されている場合にはこれにより位置が調整されます。
このようにCinemachineではVirtual Cameraによりカメラの位置が制御されるため、
独自で位置を変えたい場合にはこれらとの整合性を取る必要があります。
これを行うコンポーネントがCinemachine Camera Offsetです。
使い方
Cinemachine Camera Offsetを使うには、Virtual CameraのExtensionsからCinemachineCameraOffsetを選択してアタッチします。
アタッチしたらまず、Apply Afterにどのタイミングで位置にオフセットを掛けるかを指定します。
それぞれの意味は下記の通りです。
名前 | 説明 |
---|---|
Body | Bodyを処理した後 |
Aim | Aimを処理した後 |
Nose | Noiseを処理した後 |
Finalize | 一番最後 |
タイミングを決めたら後はOffsetを入力するだけです。
この分だけ位置が補正されます。
スクリプトで制御する
Cinemachine Camera Offsetはスクリプトから編集することもできます。
using UnityEngine; public class Example : MonoBehaviour { [SerializeField] private CinemachineCameraOffset _cinemachineOffset; [SerializeField] private float _radius; [SerializeField] private float _speed; void Update() { var time = Time.time * _speed; var x = _radius * Mathf.Cos(time); var y = _radius * Mathf.Sin(time); _cinemachineOffset.m_Offset = transform.localToWorldMatrix * new Vector3(0, x, y); } }
再生するとOffsetがかかっていることが確認できます。