NGUI與UGUI更改攝像機視野大小(縮放)的兩種方法

前言:本人在網上找了一下更改攝像機視野的方法,找不到我想要的方法,並且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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章