【发布时间】:2016-07-31 18:49:55
【问题描述】:
//Calculate time step
float timeStep = stepTimer.getTicks() / 1000.f;
//Move for time step
dot.move( timeStep );
//Restart step timer
stepTimer.start();
这段取自 Lazy Foo 的 SDL 教程的代码应该会生成一个基于可变时间步长的运动系统。我对此的主要问题是它是如何工作的? float timeStep = stepTimer.getTicks() / 1000.f; 以 秒 为单位计算经过的时间。因此,如果假设自上次移动调用以来经过了 2 毫秒,则 timeStep var 将为 0.02 秒。这怎么可能在代码中使用?如果我有每秒 10 个像素的恒定速度,并且我想让该速度适用于任何帧速率,我必须将我的 px/s 乘以该值 (0.02)。
但是这会导致以下posx += 10*0.02。正如我们刚刚了解到的,这意味着我们将位置增加 0.2 像素(这当然不会起作用,它只会降低值)。
我在这里错过了什么?
【问题讨论】:
标签: c++ sdl frame-rate