[Unity/C#] CinemachineVertualCameraのAimをスクリプトで取得/変更する方法

Unity

UnityのCinemachineVertualCameraの回転を一時的に止めるために、スクリプトでAimSpeedを変更したかったのですが、マニュアルに詳しく書かれていなかったので、ここにメモを書き残しておきます。

Aimの「POV」にGetCinemachineComponent<CinemachinePOV>()でアクセスしています。

using Cinemachine;
// 省略
private CinemachineVirtualCamera cinemachineVirtualCamera;
private CinemachinePOV cinemachinePOV;
private float originalHorizontalAxisMaxSpeed;
private float originalVerticalAxisMaxSpeed;
// 省略

void Start()
{
    var cinemachineBrain = Camera.main.gameObject.GetComponent<CinemachineBrain>();
    //アクティブなVertualCameraを取得
    var virtualCamera = cinemachineBrain.ActiveVirtualCamera;
    var virtualCameraObj = virtualCamera.VirtualCameraGameObject;
    cinemachineVirtualCamera = virtualCameraObj.GetComponent<CinemachineVirtualCamera>();
    cinemachinePOV = cinemachineVirtualCamera.GetCinemachineComponent<CinemachinePOV>();
    //元の値を保持
    originalHorizontalAxisMaxSpeed = cinemachinePOV.m_HorizontalAxis.m_MaxSpeed;
    originalVerticalAxisMaxSpeed = cinemachinePOV.m_VerticalAxis.m_MaxSpeed;
}

//カメラの回転を有効にする
public void EnableCameraToControll()
{
    cinemachinePOV.m_HorizontalAxis.m_MaxSpeed = originalHorizontalAxisMaxSpeed;
    cinemachinePOV.m_VerticalAxis.m_MaxSpeed = originalVerticalAxisMaxSpeed;
}

//カメラの回転を無効にする
public void DisableCameraToControll()
{
    cinemachinePOV.m_HorizontalAxis.m_MaxSpeed = 0;
    cinemachinePOV.m_VerticalAxis.m_MaxSpeed = 0;
}

マニュアル

Class CinemachinePOV | Package Manager UI website
https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/api/Cinemachine.CinemachinePOV.html

広告