2017-02-10 107 views
-1

我剛剛學習Unity3d一段時間,然後我有一個關於相機跟隨和背景移動不平穩的問題。我使用ragidbody2d創建了一個立方體,然後使用兩種不同的方法讓相機跟隨: a。我在相機中製作相機 b。我使用腳本來控制攝像頭(後期更新使用)UNITY3d相機跟隨和背景移動不平滑

我添加了一些圖片轉換成精靈(大小爲1024 * 512)。我讓他們背景。

當玩它時,兩種方法都有同樣的問題,背景移動不平滑,但不完全平滑,它會不時出現。

我試過在快速移動角色中發現的官方二維實例,背景並不平滑。但是Unity有一些像badland一樣的遊戲,當我玩的時候,沒有這個問題。我不知道如何解決這個問題,相機是否配置好? Scirpt?紋理的類型?壓縮方式?或需要使用一些插件? 請幫助我。謝謝。

回答

0

這可能是因爲您正在使用的更新沒有同步。主要更新(觸發每幀,兩者之間的時間不同(Time.deltaTime)),FixedUpdate(觸發每個物理更新,這是一個固定時間(Time.fixedTime))和LateUpdate(每幀),但是在最後)。

如果您試圖追隨受物理影響的剛體,建議將相機更新功能設置爲Late-或FixedUpdate。

如果設置了剛體的插在它的檢查你可以用它在更新功能:

一個rigidody得到的更新它的位置,每一個個固定的時間,在更新功能可以被觸發時的5倍FixedUpdate只被調用一次,反之亦然。這會產生奇怪的結果,因此設置剛體插值會使那些未更新的更新之間的事情平滑下來。

此外,您可以使用Lerp方法平滑移動相機。一個例子:

void Update() { 
    Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, targetPosition, Time.deltaTime * 5); 
} 

更多lerping here

希望這有助於

1

使用 「LateUpdate」 所有更新功能已被調用後 LateUpdate被調用。這對訂購腳本執行很有用。例如,後續攝像機應始終在LateUpdate中實施,因爲它跟蹤可能在Update中移動的對象。

0

我發現另一個問題,我根本不移動相機,只是移動一個GameObject,其中有一些圖片作爲背景。移動遊戲對象的腳本是

更新()

this.transform.Translate(Vector3.right * Time.deltaTime * 40.0f, Space.World); 

Vector3 pos = this.transform.position; 
pos.x += (100.0f * Time.deltaTime); 
transform.position = Vector3.Lerp(transform.position, pos, Time.deltaTime * 50); 

的reuslt是後臺移動不與視覺滯後順利,但不是完全光滑的話,那將不時出現。

是否有一些配置錯誤?圖形仿真?還是別的?