游戏开发过程中,需要很多地方来改变相机视野的大小,比如在竞技类游戏中通过拉伸相机视野,给人一种加速的感觉,本篇博客就告诉大家一种简易的方法实现这种效果,通过设置相机的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;
}
}
}
}
}