为了提供一些背景信息,我目前正致力于Java编码的弹球游戏。我将它保存在MVC设计模型中。它有一个相当逼真的物理系统,可以让它处理碰撞,重力,摩擦等。系统现在可以在20 FPS系统上运行。
我遇到的问题是检查系统中碰撞的物理循环是通过运行一种方法来运行的,该方法使用球的当前速度计算直到下一次碰撞的时间。这种工作最有效的方法显然是继续运行检查以考虑检查之间球的移动以使其尽可能准确,并且如果直到碰撞的时间小于下次检查的时间,然后进行碰撞。
然而,现在我正在使用的系统每秒只能运行20次循环,这不能提供我想要的准确结果,特别是在高加速时,例如在发球时。
我使用的定时器循环位于MVC的控制器部分,并调用位于模型中的物理部分。我可以在物理系统可以使用的控制器中调用方法时传递剩余的时间,但是我不知道如何多次运行循环,同时仍然在下一次屏幕刷新之前跟踪剩余时间?
理想情况下,我想每次刷新屏幕至少运行10次。如果有人需要更多信息,请询问。
感谢您的帮助。
答案 0 :(得分:0)
所以实际的问题是你不知道碰撞何时发生以及下一次帧更新是什么时候?
这些是不是单独运行的任务?一个管理冲突检测的线程和一个进行更新的线程?每个线程可以按自己的间隔运行(Timer.addTask(...)),它们应该可以同步,因此在执行渲染线程时不会执行更改/位置更新。
希望这能回答你的问题。
问候,Rob。