【Unity】Cinemachineのカメラの向きをスクリプトで取得する方法

導入

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

Unity公式ドキュメント – CinemachineVirtualCamera

Unity公式ドキュメント – CinemachineComponentBase

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です