下記のサンプルコードを提示します。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class LimitYRotation : MonoBehaviour
{
[SerializeField]
private CinemachineFreeLook freeLookCam;
[SerializeField]
private float minYAngle = -45f; // 最小Y角度
[SerializeField]
private float maxYAngle = 45f; // 最大Y角度
private void Update()
{
LimitFreeLookYAxis();
}
/// <summary>
/// Y 軸方向の回転制御
/// </summary>
private void LimitFreeLookYAxis()
{
// Y軸の角度を取得
float currentYAngle = freeLookCam.m_YAxis.Value * 180f;
// Y軸の角度が制限を超えていたら修正
if (currentYAngle < minYAngle)
{
freeLookCam.m_YAxis.Value = minYAngle / 180f;
}
else if (currentYAngle > maxYAngle)
{
freeLookCam.m_YAxis.Value = maxYAngle / 180f;
}
}
}