C# 使用滑块控制摄像头';什么是FoV?

C# 使用滑块控制摄像头';什么是FoV?,c#,unity3d,C#,Unity3d,我正在使用一个滑块,希望控制相机的视野。如何实现这一点,因为滑块在每一帧都使用鼠标滚动更新相机的视野?我想控制滑块以及滑块应该更新FoV使用鼠标滚动。有什么办法我可以同时做到这两件事吗 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ublic class CamZoom : MonoBehaviour { float MouseZo

我正在使用一个滑块,希望控制相机的视野。如何实现这一点,因为滑块在每一帧都使用鼠标滚动更新相机的视野?我想控制滑块以及滑块应该更新FoV使用鼠标滚动。有什么办法我可以同时做到这两件事吗

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

ublic class CamZoom : MonoBehaviour
{
    float MouseZoomSpeed = 15.0f;
    float TouchZoomSpeed = 0.1f;
    float ZoomMinBound = 0.1f;
    float ZoomMaxBound = 120.9f;
    Camera cam;

    public Slider slider;

    // Use this for initialization
    void Start()
    {
        cam = GetComponent<Camera>();
    }

    
void LateUpdate()
    {

         float scroll = -Input.GetAxis("Mouse ScrollWheel");
         Zoom(scroll, MouseZoomSpeed);

         slider.value = cam.fieldOfView;
       

         if(cam.fieldOfView < ZoomMinBound) 
         {
             cam.fieldOfView = 0.1f;
         }
         else
         if(cam.fieldOfView > ZoomMaxBound ) 
         {
             cam.fieldOfView = 179.9f;
         }
    }

    void Zoom(float deltaMagnitudeDiff, float speed)
    {

        cam.fieldOfView += deltaMagnitudeDiff * speed;
        // set min and max value of Clamp function upon your requirement
        cam.fieldOfView = Mathf.Clamp(cam.fieldOfView, ZoomMinBound, ZoomMaxBound);
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共级CamZoom:MonoBehavior
{
浮动鼠标速度=15.0f;
float-TouchZoomSpeed=0.1f;
浮动ZoomMinBond=0.1f;
浮动ZoommaxBond=120.9f;
摄像机;
公共滑块;
//用于初始化
void Start()
{
cam=GetComponent();
}
void LateUpdate()
{
float scroll=-Input.GetAxis(“鼠标滚轮”);
缩放(滚动、鼠标移动速度);
slider.value=cam.fieldOfView;
if(cam.fieldOfViewZoomMaxBound)
{
cam.fieldOfView=179.9f;
}
}
空心缩放(浮动增量大小差,浮动速度)
{
cam.fieldOfView+=增量幅度差值*速度;
//根据您的要求设置夹紧功能的最小值和最大值
cam.fieldOfView=数学夹具(cam.fieldOfView、ZoomMinBound、ZoomMaxBound);
}
}
是,您可以使用以反馈值,也可以在鼠标滚动后将值反馈到滑块,例如

public class CamZoom : MonoBehaviour
{
    // I would make these adjustable via the Inspector
    [SerializeField] float MouseZoomSpeed = 15.0f;
    [SerializeField] float TouchZoomSpeed = 0.1f;
    [SerializeField] float ZoomMinBound = 0.1f;
    [SerializeField] float ZoomMaxBound = 179.9f;
    [SerializeField] Camera cam;

    public Slider slider;

    // Use this for initialization
    void Start()
    {
        if(!cam) cam = GetComponent<Camera>();
        
        slider.minValue = ZoomMinBound;
        slider.maxValue = ZoomMaxBound;
        slider.value = cam.fieldOfView;
        slider.onValueChanged.AddListener(OnSliderValueChanged);
    }

    private void OnSliderValueChanged(float newValue)
    {
        cam.fieldOfView = newValue;
    }
    
    void LateUpdate()
    {
         var scroll = -Input.GetAxis("Mouse ScrollWheel");

         Zoom(scroll, MouseZoomSpeed);

         slider.value = cam.fieldOfView;
    }

    void Zoom(float deltaMagnitudeDiff, float speed)
    {
        cam.fieldOfView += deltaMagnitudeDiff * speed;

        cam.fieldOfView = Mathf.Clamp(cam.fieldOfView, ZoomMinBound, ZoomMaxBound);
    }
}
公共级CamZoom:MonoBehavior
{
//我会通过检查员调整这些
[SerializeField]浮动鼠标速度=15.0f;
[SerializeField]float TouchZoomSpeed=0.1f;
[SerializeField]浮动ZoomMinBond=0.1f;
[SerializeField]浮点ZoomMaxBound=179.9f;
[现场]摄像机;
公共滑块;
//用于初始化
void Start()
{
如果(!cam)cam=GetComponent();
slider.minValue=缩放绑定;
slider.maxValue=ZoomMaxBound;
slider.value=cam.fieldOfView;
slider.onValueChanged.AddListener(OnSliderValueChanged);
}
SliderValueChanged上的专用void(浮动新值)
{
cam.fieldOfView=newValue;
}
void LateUpdate()
{
var scroll=-Input.GetAxis(“鼠标滚轮”);
缩放(滚动、鼠标移动速度);
slider.value=cam.fieldOfView;
}
空心缩放(浮动增量大小差,浮动速度)
{
cam.fieldOfView+=增量幅度差值*速度;
cam.fieldOfView=数学夹具(cam.fieldOfView、ZoomMinBound、ZoomMaxBound);
}
}

随时准备救援!非常感谢!!:)