在我的主游戏循环中,我使用调用obj.move(1, 0)
将对象向右移动,但它移动得非常快,因为它处于循环中。如何将速度减慢到一定的速度?
while (window.isOpen())
{
// ...
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
object.move(1, 0);
}
答案 0 :(得分:2)
测量每个帧的经过时间(以毫秒为单位),即delta
,并将其累积在控制动画的变量中(每个对象)。然后将object.move
包裹起来,检查其总经过时间是否大于某个数量,即30毫秒。这将导致每秒大约33次移动 - 看起来像一个平滑的移动,不是太快,也不是太慢。