相機跟隨

相機跟隨其實就是讓 Camera 跟 player 保持一定的距離,當(dāng) player 移動時距離不變,則視角就是跟著移動。
單個主角:
  對于單個主角,只需要設(shè)置相機與主角相對距離即可。

    public GameObject Player; //主角
    private Vector3 offset ;  //相對距離

    void Start () {
        offset = transform.position - Player.transform.position ; //獲取初始相對距離
    }
    void Update () {
        this.transform.position = Player.transform.position+ offset;//相對距離保持不變
    }

兩個主角:
  對于兩個主角的情況,除了需要設(shè)置相對距離外,還應(yīng)該設(shè)置 Camera 的 size。當(dāng)兩主角之間的距離變大時,相機視角也應(yīng)該相應(yīng)增大,當(dāng)兩主角靠近時,視角應(yīng)該減小。一般取兩主角的中心點作為視野點,同時注意限制 Camera 的最小 size 和最大 size ,否則效果會不當(dāng)。

    public Transform Player1;
    public Transform Player2;

    public float minCameraSize = 10.0f; //相機最小 size
    public float maxCameraSize = 30.0f; //相機最大 size

    private Vector3 offset ;  //距離差值
    private Camera myCamera;  //相機

    void Start () {
        offset = transform.position - (Player1.position + Player2.position)/2 ; //取兩物體的中點
        myCamera = this.GetComponent<Camera> ();

    }
    void Update () {
        this.transform.position = (Player1.position + Player2.position)/2+ offset; //與兩物體的中點保持差值

        float size = Vector3.Distance (Player1.position, Player2.position) * 1.0f;//1.0f 為自定義比例
        if (size < minCameraSize) {
            size = minCameraSize;
        }
        if (size > maxCameraSize) {
            size = maxCameraSize;
        }
        myCamera.orthographicSize = size;
    }

這里有個細節(jié),跟隨兩個物體時我們沒有考慮當(dāng)一個物體消失時的情況,例如一個玩家被消滅,此時會出現(xiàn)空指針異常。這里應(yīng)該根據(jù)需要自己做一定的修改。需求不同實現(xiàn)也是不同,如果是兩方對戰(zhàn),此時游戲結(jié)束,相機可以不跟隨也可以給獲勝玩家一個特寫。如果是雙人合作,那么可以將鏡頭跟隨剩余的玩家。
  不僅僅是相機的跟隨,一個物體跟隨另一個物體的原理都是一樣的,都可以利用設(shè)置相對位置的方式。例如主角身上有 buff 的特效,跟蹤導(dǎo)彈等等。具體的實現(xiàn)方式需要根據(jù)具體的要求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容