using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 镜头拉近拉远
/// </summary>
public class CameraZoom : MonoBehaviour {
public bool isFar= true;
private Camera camera;
private void Start()
{
camera = GetComponent<Camera>();
}
//鼠标左键0,鼠标右键1,鼠标中键2
//第一种:直接拉近拉远
/*void Update () {
if(Input.GetMouseButton(1))
{
isFar = !isFar;
if (isFar) //拉远60
camera.fieldOfView = 60;
else //拉近20
camera.fieldOfView = 20;
}
}*/
//第二种:逐渐拉近拉远
/*void Update()
{
if (Input.GetMouseButton(1))
{
//按时执行1帧
isFar = !isFar;
}
//每帧执行
if (isFar) //拉远60
{
if (camera.fieldOfView < 60)
camera.fieldOfView += 2;
}
else //拉近20
{
if(camera.fieldOfView > 20)
camera.fieldOfView -=2;
}
}*/
//第三种:镜头快速拉近拉远,到一定位置的时候逐渐拉近拉远(只有两级)
/*void Update()
{
if (Input.GetMouseButton(1))
{
//按时执行1帧
isFar = !isFar;
}
//每帧执行
if (isFar) //拉远60
{
//Mathf是数学函数,Lerp是插值(起点,终点,比例)
camera.fieldOfView= Mathf.Lerp(camera.fieldOfView, 60, 0.1f);
//由快到慢,无限接近终点(所以要等于终点)abs是aboslute绝对的意思
if (Mathf.Abs(camera.fieldOfView - 60) < 0.1f)
camera.fieldOfView = 60;
}
else //拉近20
{
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f);
if (Mathf.Abs(camera.fieldOfView - 20) < 0.1f)
camera.fieldOfView = 20;
}
}*/
//第四种:镜头快速拉近拉远,到一定位置的时候逐渐拉近拉远(三级以上),用数组
public float[] zoomLevel;
public int index;
void Update()
{
if (Input.GetMouseButton(1))
{
//使index不超数组索引值
index=index <zoomLevel.Length-1?index+1:0;
//或者index=(index+1)%zoomLevel.Length;
}
//Mathf是数学函数,Lerp是插值(起点,终点,比例)
camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevel[index], 0.1f);
//由快到慢,无限接近终点(所以要等于终点)abs是aboslute绝对的意思
if (Mathf.Abs(camera.fieldOfView - zoomLevel[index]) < 0.1f)
camera.fieldOfView = zoomLevel[index];
}
}