導入
CinemachineVirtualCameraの垂直方向の向き(VericalAxis.Value)を
this.gameObject.GetComponent<CinemachineVirtualCamera>().Aim.VerticalAxis.Value
で取得しようとしたところ、「CinemachineVirtualCameraにはAimという名前のプロパティはありません」というエラーが発生。
じゃあどうすれば取得できるのか、Unity公式リファレンスを当たったところ、なんとか正答に到達。その正答にたどり着く作業は意外と大変だったので、ここで共有しておこうと思います。
コード
これがCinemchineVirtualCameraの垂直方向の角度の値を取得するのに必要なコードです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class LESSON : MonoBehaviour
{
CinemachineVirtualCamera camera;
// Start is called before the first frame update
void Start()
{
camera = this.gameObject.GetComponent<CinemachineVirtualCamera>();
}
public float GetVerticalAngle()
{
return camera.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachinePOV>().m_VerticalAxis.Value;
}
}
補足
GetCinemachineComponent とは
定義は
public CinemachineComponentBase GetCinemachineComponent(CinemachineCore.Stage stage)
「CinemachineCore.Stage」に応じた「CinemachineComponentBase」を返します。
CinemachineCore.Stage とは
CinemachineVirtualCameraコンポーネントにある、「Aim」「Body」「Noise」などを含む列挙型メンバーです。
CinemachinePOV とは
CinemachineComponentBaseの継承クラスの一つ。Aimの項目を「POV」に設定したときに継承されます。
水平方向の場合
m_VerticalAxisのところをm_HorizontalAxisに変えればOKです。
参考文献
Unity公式ドキュメント – ChinemachineCore.Stage
Unity公式ドキュメント – CinemachinePOV