固定游戏循环中的时间步长

时间:2014-11-18 04:48:23

标签: java time

我有这个游戏循环:

public void show() {

        // other stuff...

        // set delta time
        float currentTime = clock.getElapsedTime().asSeconds();
        float dt = currentTime - lastTime;

        // iterate through entities
        for (Entity e : entities) {
            e.draw();
            e.update(dt);
        }

        // other stuff...

        lastTime = currentTime;
    }

如何为更新过程实施固定时间步骤?也就是说,如何基于常量fps更新我的进程(每次循环运行时都不更新?)我知道我只需要遍历实体两次(一次用于更新,一次用于绘制),但我怎么做修复更新过程的时间步骤?

1 个答案:

答案 0 :(得分:1)

如果可以的话,我建议使用多个线程:

你需要一个包含时钟的单独类来调用帧更新。出于结构目的,您可能希望此类创建窗口类的实例。

public void run(){
    for(;;){
        Thread.sleep([milleseconds between frames]);
        [graphic class].nextFrame();
    }
}

如果您需要,请参阅主题:https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html