2014-07-13 17 views
0

我正在製作一個3D相機類,它朝着某個點靠攏,放慢速度並緩解停頓。定期做到這一點非常簡單:關閉一個點,獨立於幀速率?

// positions are vectors, dampening is a scalar, usually set to ~0.9 

currentPosition += (targetPosition - currentPosition) * dampening; 

但是,這被鎖定到幀率,假設它每幀只執行一次。

如何最好地實現這個依賴於時間的行爲,而不是幀速率或時間執行?

回答

0

短的實驗(如果你需要一點感應)顯示,經過ň幀你在

targetPosition*(1 - (1 - dampening)^n) + currentPosition*(1 - dampening)^n 

所以做出這種隨時間變化的,寫

targetPosition*(1 - pow(1 - dampening, t)) + currentPosition*pow(1 - dampening, t) 

現在每單位時間衰減,時間可能甚至是分數。你的問題讓我想起了Calculate speed by distance and friction