NGUI与UGUI更改摄像机视野大小(缩放)的两种方法

前言:本人在网上找了一下更改摄像机视野的方法,找不到我想要的方法,并且NGUI更改摄像机的方法更少(我找不到,不代表你也找不到:),所以我自己写两种方法,以便大家参考。
这两种方法我都会写的很简单方便理解,并且可以直接使用。
前面有篇文章我已经写了摄像机跟随,可以搭配这个组合一起使用。

上代码

第一种UGUI改变摄像机视野(脚本挂在Camera下)

public class CameraFollow : MonoBehaviour {
    public Camera Camera01;
    private void Awake()
    {
        Camera01 = transform.GetComponent();

    }
    void Update () {
         if(Input.GetAxis("Mouse ScrollWheel")<0)//鼠标滚轮
         {
             Camera01.fieldOfView +=1;//这里写的是1,可以根据你自己的实际情况改变,影响缩放大小
         }
        else  if (Input.GetAxis("Mouse ScrollWheel")>0)
        {
            Camera01.fieldOfView--;
        }
    }
}

fieldOfView这个可能有些人不懂,这个就是UGUI控制控制摄像机的视野大小的主要核心。
NGUI与UGUI更改摄像机视野大小(缩放)的两种方法_第1张图片
另外说一点:这个和控制摄像机的距离是不一样的!
Camera.main.transform.Translate(0,0,-1);例如这句代码,就是控制摄像机的远近,通过摄像机的远近来控制视野的大小。但是这个有个缺点就是在摄像机跟随的时候,这段代码显示不出效果,因为摄像机的距离和角色是固定的。(如果是做小地图,那也是不错的选择)。
而fieldOfView,是在原本的位置就可以直接更改摄像机的视野范围。所以这个可以在摄像机跟随角色的时候使用。
这个可以根据你所需要的选择。

第二种 NGUI改变摄像机视野

上代码

public class CameraFollow : MonoBehaviour {
    public Camera Camera01;
    private void Awake()
    {
        Camera01 = transform.GetComponent();

    }
    void Update () {
         if(Input.GetAxis("Mouse ScrollWheel")<0)//鼠标滚轮
         {
             Camera01.orthographicSize += 1;//这里写的还是1,具体根据你的需求
         }
        else  if (Input.GetAxis("Mouse ScrollWheel")>0)
        {
            Camera01.orthographicSize--;
        }
    }
}

NGUI与UGUI更改摄像机视野大小(缩放)的两种方法_第2张图片
orthographicSize 改变的也是摄像机视野的大小,跟UGUI的fieldOfView差不多。
限制缩放的距离的话,就特别简单了,赋值就可以了,这里就不写了。

结尾:

说到缩放,那么还有一个Camera的值,不得不提一下。
就是Camera/Inspector下的Clear Flags这个值
具体可以上快车:https://blog.csdn.net/fenglele_fans/article/details/77842546
为什么谈这个值呢,因为在缩放的时候,再改变这个值,你会更容易理解Clear Flags。

你可能感兴趣的:(Unity3D)