瞄准镜效果的实现
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 镜头缩放
/// </summary>
public class MouseDemo : MonoBehaviour
{
private bool isFar = true;
//将缩放等级做成一个数组
public float[] zoomLevel;
private int index;
private void Update()
{
//_Camera1();//调用方法1
//_Camera2();//调用方法2
//_Camera3();//调用方法3
_Camera4();
}
/// <summary>
///方法1: 瞄准镜效果
/// </summary>
private void _Camera1()
{
if (Input.GetMouseButtonDown(1))
{
isFar = !isFar;//修改布尔值
}
if (isFar)
Camera.main.fieldOfView = 20;
else
Camera.main.fieldOfView = 60;
}
/// <summary>
/// 方法2:逐渐拉进或拉远
/// </summary>
private void _Camera2()
{
if (Input.GetMouseButtonDown(1))
{
isFar = !isFar;//修改布尔值
}
if (isFar)//拉远20--》60
{
if (Camera.main.fieldOfView < 60)
Camera.main.fieldOfView += 2;
}
else//拉进60--》20
{
if (Camera.main.fieldOfView > 20)
Camera.main.fieldOfView -= 2;
}
}
/// <summary>
/// 方法3:由快到慢拉进或拉远
/// </summary>
private void _Camera3()
{
if (Input.GetMouseButtonDown(1))
{
isFar = !isFar;//修改布尔值
}
if (isFar)//拉远20--》60
{//由快到慢 无线接近终点(不能等于终点)
Camera.main.fieldOfView=
Mathf.Lerp(Camera.main.fieldOfView, 60, 0.1f);
//取绝对值
if (Mathf.Abs(Camera.main.fieldOfView - 60) <= 0.1f)
Camera.main.fieldOfView = 60;
}
else//拉进60--》20
{
Camera.main.fieldOfView =
Mathf.Lerp(Camera.main.fieldOfView, 20, 0.1f);
if (Mathf.Abs(Camera.main.fieldOfView - 20) <= 0.1f)
Camera.main.fieldOfView = 20;
}
}
/// <summary>
/// 方法4:假设存在多个变量
/// </summary>
private void _Camera4()
{
if (Input.GetMouseButtonDown(1))
{
//如果索引小于数组长度-1则加一,否则为0;
//index = index < zoomLevel.Length - 1 ? index + 1 : 0;
index = (index + 1) % zoomLevel.Length;
}
Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView, zoomLevel[index], 0.1f);
if (Mathf.Abs(Camera.main.fieldOfView - zoomLevel[index]) < 0.1f)
Camera.main.fieldOfView = zoomLevel[index];
}
}
|