unity 3d 中攝像頭跟隨人物移動總結


學習unity 也已經有比較成的一段時間了,但還是菜鳥級別啊,一直苦於沒有師傅,如果能找到個好的師傅帶領我,估計像我這樣的石頭也已經是很牛的人了吧,哈哈....

好了 不開玩笑了。  在游戲中人物會移動。unity 中的攝像機就相當於我們的眼睛。所以要想看見東西,攝像機是必要的。在就會有問題了。在人物移動的時候人物是越走越遠,如果你不控制攝像機,那你的攝像機就會在原地不懂,人物就走遠了,隨着時間,你就會看不見人物了。如何解決這問題呢。我現在暫時能想到3中方法。

1.就是把攝像機放在人物中,當成人物的子物體,這樣就把人物當着父物體,也即是相當於設置相機的參照物吧,這樣不管人物移動到那里,它和攝像機保持的距離還是一致的。不會因為人物移動,攝像機就離人物遠了。

2.就是導入我們偉大的unity中自帶的哪個跟隨物體的腳本,  名字是 SmoothFollow。然后設置一下距離啊 高度啊,直到自己滿意。

3,就是自己用自己寫的腳本控制。 我直接上腳本吧

using UnityEngine;
using System.Collections;

public class FllowTarget : MonoBehaviour {

    public Transform character;   //攝像機要跟隨的人物
    public float smoothTime = 0.01f;  //攝像機平滑移動的時間
    private Vector3 cameraVelocity = Vector3.zero;
    private Camera mainCamera;  //主攝像機(有時候會在工程中有多個攝像機,但是只能有一個主攝像機吧)
   
    void  Awake () 
    {  
     mainCamera = Camera.main;
    }

    void  Update()
    {
        transform.position = Vector3.SmoothDamp(transform.position, character.position + new Vector3(0, 0, -5), ref cameraVelocity, smoothTime);
    }
  
}

我們講這段代碼拖動給攝像機,然后記得添加character 。好了  現在你就能看見效果了。

character.position + new Vector3(0, 0, -5)這個就是相當於攝像機的位置,也就是攝像機隔離人物往后5個單位長度。總不可能和人物坐標是一樣吧。

主要就是Vector3.SmoothDamp() 這個函數。里面的第一個參數就是當前的位置。  第二個參數就是要接近的位置。  第三個參數就是 當前速度,這個值由你每次調用這個函數時被修改。 第四個參數就是完成這個位移移動所花費的時間。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM