所以我有这段代码,在游戏循环中设置 dt (clock
的类型为 Clock
):
// set delta time
float currentTime = clock.getElapsedTime().asSeconds();
float dt = currentTime - lastTime;
// ...
lastTime = currentTime;
但是,当比赛暂停时,时钟仍然运行。因此,当游戏暂停时,dt 会变大。我该如何避免这种情况?
最佳答案
一种可能的基本方法可能类似于以下方法(伪代码):
var elapsed = current - previous;
if(elapsed > clampOverElapsed) {
elapsed = clampOverElapsed;
}
其中 clampOverElapsed
设置为合理的值,例如 25 毫秒。
这样,通过在循环中进行控制,您应该很好地处理暂停以及不合时宜的较长迭代,而无需关心大 elapsed
值的来源,这样您就不必显式
关于java - 暂停游戏循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338060/