Unity狙击枪的视野放大和缩小

xiaoxiao2021-02-28  92

直接上代码 using UnityEngine; using System.Collections; /*任务:控制摄像机视野的放大和缩小,望远镜功能   * 原理:放大事业:就是减小摄像机的垂直视野范围(减小FOV值)   *       缩小视野:就是增加摄像机的垂直视野范围(增加FOV值)   */ public class SniperRifleView : MonoBehaviour {     public int magnify = 2;//放大倍数     public float magnifySpeed = 50f;//放大速度     public float shrinkSpeed = 50f;//缩小速度     public Camera m_camera;//指定的摄像机     private float initFov;//摄像机垂直视野的范围的初始值  void Start ()     {         initFov = m_camera.fieldOfView;//设置视野的初始值  }      void Update ()      {         if (Input.GetKey(KeyCode.Mouse0))//按下左键放大视野         {             MagnifyView();         }         else //否则缩小视野(带原有视野)         {             ShrinkView();         }     }     /// <summary>     /// 放大视野     /// </summary>     private void MagnifyView()//放大视野就是,减小FOV的值     {         //如果现在FOV-下一帧的视野值,还大于原有视野值的一半,就继续减少视野值,放大视野         if ((m_camera.fieldOfView - Time.deltaTime * magnifySpeed) >= (initFov / magnify))         {             m_camera.fieldOfView -= Time.deltaTime * magnifySpeed;         }         else//否则保持视野值到最小值         {             m_camera.fieldOfView = initFov / magnify;      }     }     /// <summary>     /// 缩小视野     /// </summary>     private void ShrinkView()     {         //如果现在FOV+下一帧的视野值,还小于原有视野值的一半,就继续增减视野值,缩小视野         if ((m_camera.fieldOfView + Time.deltaTime * magnifySpeed) <= initFov)         {             m_camera.fieldOfView += Time.deltaTime * shrinkSpeed;         }         else//否则保持视野值到初始垂直视野值         {             m_camera.fieldOfView = initFov;         }   } }

效果图:

 

转载请注明原文地址: https://www.6miu.com/read-24405.html

最新回复(0)