Java实现一个工作FPS系统

我在java中编写了一个“重力模拟器”,它只包含一个具有ax和y force的球。

我现在这样做的方式(不起作用)如下:

程序规则:4个像素计为1米。 地心引力是9.8m / s ^ 2。

在我的主课堂中,我有这样的:

public int sleepMilli = 17; //the thread will sleep 17 milliseconds after every execution
public double g = 9.8; //gravity

那么,在主循环中我有这样的:

try {
            Thread.sleep(17);
        } catch (InterruptedException e) {
            System.out.println("Thread couldn't sleep.");
            e.printStackTrace();
        }

所以。 我将如何去执行一个工作fps系统到这个“游戏”中,所以它不会影响球的移动速度?

如果您想要提供更多信息,只需要求我这样做。


一个常见的解决方案是使所有的模拟方法都以自上一帧以来经过的秒数作为参数。 例如public void move(float secondsElapsed)

然后,在该主线程中,使用System.currentTimeMilis()测量自上一帧以来流逝的时间,不要假设Thread.sleep(17); 会睡17毫秒。

这有两个好处:1)超级容易改变所需的FPS; 2)即使游戏的FPS下降,你的物体也会以正确的速度移动。

链接地址: http://www.djcxy.com/p/65407.html

上一篇: Java Implementing A Working FPS System

下一篇: why does my d3 force layout explode