所以我有这段代码,在游戏循环中设置dt(clock
类型为Clock
):
// set delta time
float currentTime = clock.getElapsedTime().asSeconds();
float dt = currentTime - lastTime;
// ...
lastTime = currentTime;
但是,当游戏暂停时,时钟仍会运行。因此,当游戏暂停时,dt会变大。我怎么能避免这个?
答案 0 :(得分:0)
一种可能的,基本的方法可能类似于以下方法(伪代码):
var elapsed = current - previous;
if(elapsed > clampOverElapsed) {
elapsed = clampOverElapsed;
}
将clampOverElapsed
设置在某个合理值的位置,例如25 ms
这样,通过在循环中控制该控件,您应该很好地处理暂停以及不合理的更长迭代,而不关心您的大elapsed
值的来源是什么,这样您就不必明确