2013-03-18 48 views
2

为了给出一些背景信息,我目前正在研究Java编码的弹球游戏。我将它保存在MVC设计模型中。它有一个相当逼真的物理系统,可以处理碰撞,重力,摩擦等。系统现在运行在20 FPS系统上。每个线程循环多次重复一个方法

我遇到的问题是,通过运行使用当前球速度的方法来检查系统中碰撞的物理循环计算直到下一次碰撞的时间。对此最有效的方法显然是继续运行支票以说明支票之间的球移动,以使其尽可能准确,并且如果直到碰撞时的时间少于直到下一次支票的时间,然后进行碰撞。

但是,现在我正在使用的系统每秒只能运行20次循环,这并不能提供我想要的精确结果,特别是在高加速度时(例如在球启动时)。

我使用的定时器循环位于MVC的控制器部分,并将调用放置在模型中的物理部分。我可以在控制器中调用该方法的时间内传递该物理系统可以使用的时间,但是我不知道如何在下一次屏幕刷新之前跟踪剩余时间多次运行循环?

理想情况下,我想每次刷新屏幕至少运行10次。如果有人需要更多信息,请提问。

感谢您的任何帮助。

回答

0

所以实际的问题是,你不知道什么时候碰撞会发生,什么时候下一次帧更新?

不应该这些是独立运行的任务吗?一个管理碰撞检测的线程和一个更新的线程?每个线程都可以在自己的时间间隔(Timer.addTask(...))上运行,并且它们应该可以同步,因此执行渲染线程时不会执行分离/位置更新。

希望这回答你的问题。

Regards,Rob。

相关问题