CinemachineVirtualCameraのBodyの情報を取得する

UnityでCinemachineを使っていて、Bodyの中にあるデータをスクリプトで読み書きしたいと思ったのですが…

調べても「これだ!」というものを見つけることができなかったので、自分なりにやってみた結果をここに書いていこうと思います。


取得したいデータ

BodyをOrbitalTransposer(対象の周りぐるぐる回るカメラ)にしたときに設定できる[X Axis]の値

取得方法

取得するのに必要な宣言はこのふたつ

//バーチャルカメラ
[SerializeField] private CinemachineVirtualCamera _virtualCamera;
//Bodyのデータを持つ変数
CinemachineOrbitalTransposer _orbitalTransposer;


まずは、バーチャルカメラからBodyのデータを持ってきます

void Start()
{
    _orbitalTransposer = _virtualCamera.GetCinemachineComponent<CinemachineOrbitalTransposer>();
}

取得したいデータのあるバーチャルカメラとスクリプトが同じオブジェクトにアタッチされてる場合は、次の方法でも持ってくることができます

void Start()
{
    _orbitalTransposer = GetComponent<CinemachineVirtualCamera>().GetCinemachineComponent<CinemachineOrbitalTransposer();
}


そのあとは、データが欲しいタイミングで、orbitalTransposerの中から必要なものを探せば簡単に読み書きできるようになります

例1)
[X Axis]の[Value]を取得

float value = _orbitalTransposer.m_XAxis.Value;

例2)
[X Axis]の[Input Axis Name]を変更

_orbitalTransposer.m_XAis.m_InputAxisName = "Mouse X";


全て確認したわけではないですが、ほかの値も同じような方法で取得することができると思います。

最後に

Unity初心者がいろいろと試行錯誤した結果なので、慣れている人からしたら基本的なことだったり、少しおかしなところがあるかもしれません。

それでも、同じようなところでつまった人のヒントや参考になると嬉しいです。

いいなと思ったら応援しよう!