C# 使用滑块控制摄像头';什么是FoV?
我正在使用一个滑块,希望控制相机的视野。如何实现这一点,因为滑块在每一帧都使用鼠标滚动更新相机的视野?我想控制滑块以及滑块应该更新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
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);
}
}
随时准备救援!非常感谢!!:)