2

为了提供一些背景信息,我目前正在开发一个 Java 编码的弹球游戏。我将它保存在 MVC 设计模型中。它有一个相当逼真的物理系统,可以处理碰撞、重力、摩擦等。该系统现在运行在 20 FPS 系统上。

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

然而,目前我正在使用的系统每秒只能运行 20 次循环,这并不能提供我想要的准确结果,尤其是在高加速度时,例如在球发射时。

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

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

谢谢你的帮助。

4

1 回答 1

0

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

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

希望这能回答你的问题。

问候,罗布。

于 2013-03-27T08:42:27.303 回答