点击鼠标右键 调整视角距离,使用数学算法让视角切换,有一个由快到慢的速度。
知识点:数学算法Lerp 数值增长由大变小 (无限接近 永远不会等于终点值)Mathf.Abs 绝对值↓
if (isFar)
{
//拉远 20 --》 60 Lerp(起点、终点、比例)
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
//由快到慢无限接近(不会等于终点)所以用绝对值推一下让他提前结束 节省多余的运算
if (Mathf.Abs(camera.fieldOfView-60)<0.1f){
camera.fieldOfView=60;
}
}
else
{
//拉近 60 --》 20
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
}
完整功能代码↓
private Camera camera;
//60 50 40 30 20用来设置多档视角距离
public float[] zoomLevels;
private int indes;
private void Start()
{
//camera = GetComponent<Camera>();
camera = Camera.main;//GameObject.FindWithTag("MainCamera")
}
private void Update()
{
Zoom();
}
private void Zoom()
{
if (Input.GetMouseButtonDown(1))
{
//修改缩放等级
//indes++;
//超过范围 从0开始
//indes= currentLevel < zoomLevels.Length - 1 ? currentLevel + 1 : 0;
indes= (currentLevel + 1) % zoomLevels.Length;
}
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevels[indes], 0.1f);
if (Mathf.Abs(camera.fieldOfView-zoomLevels[indes])<0.1f){
camera.fieldOfView=zoomLevels[indes];
}
}