2010-08-19 154 views
2

我正在用NDK中的Box2d物理引擎編寫Android遊戲。所以物理學完全是在本土世界,但繪圖仍然在Java世界。Box2d在停止並重新開始暫停後移動更快[Android]

在我的遊戲中,我有一個更新線程,步驟物理世界並使畫布無效重繪。到現在爲止還挺好。當用戶希望暫停遊戲時,我停止所有線程。然後,用戶可以選擇「恢復」遊戲,重新啓動線程,遊戲將從停止的地方開始。

由於某種原因,當遊戲重新開始時,物理中的物體移動得更快。如果它的時間步進停止並重新啓動,爲什麼會對身體做任何改變?

暫停後再次調用step()會出現問題嗎?身體的速度,質量,摩擦力,密度會在短暫停頓後發生變化。

任何幫助表示讚賞 感謝

+0

嗨,你可以分享一些關於如何讓應用程序與NDK一起工作的細節 – 2010-09-26 18:22:35

+0

Hi Sameer,這是一個多步驟的過程,我沒有記錄。我可以寫一些東西並與你分享。我會將它張貼在博客或其他內容中,並在此分享鏈接。 – wysiwyg 2010-10-29 17:21:27

回答

1

這個問題是舊的,但以防萬一你沒有解決它,一些想法浮現在腦海中:

  • 你傳遞一個恆定值步()?如果您根據所通過的實際時間量來計算該值,那可能是您的問題。
  • 您確定只創建單個線程嗎?當你恢復時,如果你恢復舊線程並意外創建另一個線程,你可以得到2倍的更新。
  • 如何將幀速率鎖定爲實時 - 是否有可能將該計算更新爲新時間?如果你有一個「最近更新」,你檢查確保至少1/60秒已經通過,如果你沒有重置簡歷上的「最後更新」值,那麼每次更新都會成功,無論這段時間是否已經過去了。