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