2015-11-16 101 views
1

我遇到了一些導致精靈抖動的簡單腳本問題。所有腳本所做的是:爲什麼在unity中增加transform.position會導致iOS抖動?

public float speed; 

void Update() 
{ 
    var pos = transform.position; 
    pos.y += speed * Time.deltaTime; 
    transform.position = pos; 
} 

此代碼運行正常的編輯器或獨立的版本,但是當我嘗試我的iOS設備上運行它,我看到一些抖動。場景中有3個帶有上述腳本的gameobjects,沒有剛體物理。這只是三個沒有任何物理學的物體。

任何想法爲什麼它會導致抖動?

回答

0

這可能是因爲您正在Update()中創建新的var pos

Update()每幀被調用一次,因此每幀都會創建一個新變量pos,這會減慢計算時間,這就是爲什麼它很不安。

創建var posUpdate()方法,這應該解決這個問題:)

+0

本地變量和字段之間的區別。局部變量不會卡住程序(如果你沒有填充堆棧)。它們在函數結束時被使用和刪除。所以我認爲問題不是var Pos更新 – Cenkisabi

+0

@tom這是一個很好的觀點,但它不應該爲這麼小的事情做出改變。這絕對是別的! –

0

嘗試使用的

Time.fixedDeltaTime

代替

Time.deltaTime

像我在下面的代碼片段中所做的那樣。

public float speed; 

void Update() 
{ 
    var pos = transform.position; 
    pos.y += speed * Time.deltaTime; 
    transform.position = pos; 
} 

希望它有幫助。

編輯: 如果以上不工作,然後嘗試把它在協程象下面這樣:

IEnumerator Move(){ 
    while (true) { 
     yield return new WaitForSeconds(Time.fixedDeltaTime); 
     float step = speed * Time.deltaTime; 
     transform.position += Vector3.up*step; 
    } 
} 

呼叫在啓動()以上的協程由

StartCoroutine(通過MoveTo);

+0

我已經嘗試過使用FixedDeltaTime,並沒有解決它! –

相關問題