前言:本人在网上找了一下更改摄像机视野的方法,找不到我想要的方法,并且NGUI更改摄像机的方法更少(我找不到,不代表你也找不到:),所以我自己写两种方法,以便大家参考。
这两种方法我都会写的很简单方便理解,并且可以直接使用。
前面有篇文章我已经写了摄像机跟随,可以搭配这个组合一起使用。
上代码
第一种UGUI改变摄像机视野(脚本挂在Camera下)
public class CameraFollow : MonoBehaviour {
public Camera Camera01;
private void Awake()
{
Camera01 = transform.GetComponent<Camera>();
}
void Update () {
if(Input.GetAxis("Mouse ScrollWheel")<0)//鼠标滚轮
{
Camera01.fieldOfView +=1;//这里写的是1,可以根据你自己的实际情况改变,影响缩放大小
}
else if (Input.GetAxis("Mouse ScrollWheel")>0)
{
Camera01.fieldOfView--;
}
}
}
fieldOfView这个可能有些人不懂,这个就是UGUI控制控制摄像机的视野大小的主要核心。
另外说一点:这个和控制摄像机的距离是不一样的!
Camera.main.transform.Translate(0,0,-1);例如这句代码,就是控制摄像机的远近,通过摄像机的远近来控制视野的大小。但是这个有个缺点就是在摄像机跟随的时候,这段代码显示不出效果,因为摄像机的距离和角色是固定的。(如果是做小地图,那也是不错的选择)。
而fieldOfView,是在原本的位置就可以直接更改摄像机的视野范围。所以这个可以在摄像机跟随角色的时候使用。
这个可以根据你所需要的选择。
第二种 NGUI改变摄像机视野
上代码
public class CameraFollow : MonoBehaviour {
public Camera Camera01;
private void Awake()
{
Camera01 = transform.GetComponent<Camera>();
}
void Update () {
if(Input.GetAxis("Mouse ScrollWheel")<0)//鼠标滚轮
{
Camera01.orthographicSize += 1;//这里写的还是1,具体根据你的需求
}
else if (Input.GetAxis("Mouse ScrollWheel")>0)
{
Camera01.orthographicSize--;
}
}
}
orthographicSize 改变的也是摄像机视野的大小,跟UGUI的fieldOfView差不多。
限制缩放的距离的话,就特别简单了,赋值就可以了,这里就不写了。
结尾:
说到缩放,那么还有一个Camera的值,不得不提一下。
就是Camera/Inspector下的Clear Flags这个值
具体可以上快车:https://blog.csdn.net/fenglele_fans/article/details/77842546
为什么谈这个值呢,因为在缩放的时候,再改变这个值,你会更容易理解Clear Flags。