2013-03-18 107 views
2

爲了給出一些背景信息,我目前正在研究Java編碼的彈球遊戲。我將它保存在MVC設計模型中。它有一個相當逼真的物理系統,可以處理碰撞,重力,摩擦等。系統現在運行在20 FPS系統上。每個線程循環多次重複一個方法

我遇到的問題是,通過運行使用當前球速度的方法來檢查系統中碰撞的物理循環計算直到下一次碰撞的時間。對此最有效的方法顯然是繼續運行支票以說明支票之間的球移動,以使其儘可能準確,並且如果直到碰撞時的時間少於直到下一次支票的時間,然後進行碰撞。

但是,現在我正在使用的系統每秒只能運行20次循環,這並不能提供我想要的精確結果,特別是在高加速度時(例如在球啓動時)。

我使用的定時器循環位於MVC的控制器部分,並將調用放置在模型中的物理部分。我可以在控制器中調用該方法的時間內傳遞該物理系統可以使用的時間,但是我不知道如何在下一次屏幕刷新之前跟蹤剩餘時間多次運行循環?

理想情況下,我想每次刷新屏幕至少運行10次。如果有人需要更多信息,請提問。

感謝您的任何幫助。

回答

0

所以實際的問題是,你不知道什麼時候碰撞會發生,什麼時候下一次幀更新?

不應該這些是獨立運行的任務嗎?一個管理碰撞檢測的線程和一個更新的線程?每個線程都可以在自己的時間間隔(Timer.addTask(...))上運行,並且它們應該可以同步,因此執行渲染線程時不會執行分離/位置更新。

希望這回答你的問題。

Regards,Rob。

相關問題