相機視野拉伸,設定相機的Field Of View改變視野的大小
阿新 • • 發佈:2018-11-10
遊戲開發過程中,需要很多地方來改變相機視野的大小,比如在競技類遊戲中通過拉伸相機視野,給人一種加速的感覺,本篇部落格就告訴大家一種簡易的方法實現這種效果,通過設定相機的Field Of View大小,本指令碼只需掛載到相機上,設定enabled=true,就可以實現由近到遠然後還原的效果。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraFieldStretch : MonoBehaviour { Camera mCamera; public float maxFiledValue=100;//filed of view的最大值 public float beginRate=100;//開始放大的速率 public float endRate=100;//結束放大的速率 public float stretchTime=1;//拉伸後持續的時間 float mTime;//拉伸field of view到設定值後的時間 float originalSize;//原始大小 bool hasChange;//已經拉伸 bool alreadyAdd;//field of view已經加到最大值 void OnDisable() { mCamera.fieldOfView = originalSize; } void OnEnable () { mCamera = gameObject.GetComponent<Camera>(); originalSize = mCamera.fieldOfView; mTime = 0; alreadyAdd = false; } void Update () { if (!alreadyAdd) { mCamera.fieldOfView = Mathf.MoveTowards (mCamera.fieldOfView, maxFiledValue, beginRate * Time.deltaTime); if (Mathf.Approximately (mCamera.fieldOfView, maxFiledValue)) { alreadyAdd = true; } } else { mTime += Time.deltaTime; if (mTime>stretchTime) { mCamera.fieldOfView =Mathf.MoveTowards(mCamera.fieldOfView,originalSize,endRate * Time.deltaTime); if (Mathf.Approximately (mCamera.fieldOfView, originalSize)) { mCamera.fieldOfView = originalSize; enabled = false; } } } } }