學習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() 這個函數。里面的第一個參數就是當前的位置。 第二個參數就是要接近的位置。 第三個參數就是 當前速度,這個值由你每次調用這個函數時被修改。 第四個參數就是完成這個位移移動所花費的時間。