Unity缩​​放脚本

Unity Zoom script

我使用这个简单的缩放脚本,改变相机视野而不是移动相机(以避免剪裁)并且效果很好。

但是我想给它添加一个最大的 FOV,比如 FOV 80 左右。 也许还有最小 FOV(不如最大 FOV 重要)?

我可以修改这个脚本吗?

 {
 // Start is called before the first frame update
 void Start()
 {

 }

 // Update is called once per frame
 void Update()
 {
     if (Input.GetAxis("Mouse ScrollWheel") > 0)
     {
         GetComponent<Camera>().fieldOfView--;
     }
     if (Input.GetAxis("Mouse ScrollWheel") < 0)
     {
         GetComponent<Camera>().fieldOfView++;
     }
 }

}

只需将所需的最小值和最大值作为成员添加到您的脚本中。然后你可以使用检查器来调整它们:

private Camera cam;
[SerializeField] private float minFov = 20;
[SerializeField] private float maxFov = 80;

void Awake()
{
    cam = GetComponent<Camera>();
    // ensures that the field of view is within min and max on startup
    UpdateFov(cam.fieldOfView);
}

void Update()
{
    float scrollInput = Input.GetAxis("Mouse ScrollWheel");
    if(scrollInput > 0)
        UpdateFov(cam.fieldOfView - 1);
    else if(scrollInput < 0)
        UpdateFov(cam.fieldOfView + 1);    
}

void UpdateFov(float newFov)
{
    cam.fieldOfView = Mathf.Clamp(newFov, minFov, maxFov);
}

我还缓存了相机,因为 GetComponent 调用相当昂贵。