2014-12-07 235 views
1

所以我有這一段代碼,在遊戲環設置DT(clockClock類型):暫停遊戲循環?

// set delta time 
    float currentTime = clock.getElapsedTime().asSeconds(); 
    float dt = currentTime - lastTime; 
    // ... 
    lastTime = currentTime; 

然而,當遊戲暫停時,時鐘仍然運行。所以當遊戲暫停時,dt變大。我將如何避免這種情況?

+0

是「時鐘'你自己的類型? – 2014-12-07 00:15:10

+2

您需要跟蹤遊戲何時暫停和取消暫停,並將其納入「currentTime-lastTime」計算中。 – 2014-12-07 00:15:14

+0

'Clock'是JSFML的一個對象。另外,我將如何做到這一點? @MattCoubrough – Tetramputechture 2014-12-07 00:17:08

回答

0

一種可能,基底的方法可能是類似下面的一個(僞):

var elapsed = current - previous; 
if(elapsed > clampOverElapsed) { 
    elapsed = clampOverElapsed; 
} 

clampOverElapsed某處設置一個合理的值,作爲一個例子25毫秒。
這樣,通過在循環中進行該控制,您應該很好地處理暫停以及不合理的較長迭代,而不必關心值的大來源是什麼,以便您不必顯式地執行