我有这个游戏循环:
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更新我的进程(每次循环运行时都不更新?)我知道我只需要遍历实体两次(一次用于更新,一次用于绘制),但我怎么做修复更新过程的时间步骤?
答案 0 :(得分:1)
如果可以的话,我建议使用多个线程:
你需要一个包含时钟的单独类来调用帧更新。出于结构目的,您可能希望此类创建窗口类的实例。
public void run(){
for(;;){
Thread.sleep([milleseconds between frames]);
[graphic class].nextFrame();
}
}
如果您需要,请参阅主题:https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html