我目前正在使用SFML制作游戏,但是我一直在不受帧率限制的情况下陷入游戏中。现在,我弄清楚如何在所有计算机上获得一致帧率的唯一方法是使用
window.setFramerateLimit(30);
我想找到一种没有帧速率上限的方法,以便在性能更好的计算机上看起来更好,这样,如果有人计算机速度真的很慢,他们仍然可以玩游戏。什么是做到这一点的最佳方法。
最佳答案
您应该将自上一帧以来耗时传递给需要绘制的对象,然后计算该对象必须移动的空间,如下所示:
sf::Clock clock;
int speed = 300;
//Draw func that should be looped
void Draw()
{
sf::Time elapsedTime = clock.restart();
float tempSpeed = elapsedTime.asSeconds() * speed;
drawnObject.move(tempSpeed, 0);
drawnObject.draw(window);
}
这样,无论FPS大小如何,“drawnObject”都将每秒向右移动300(像素?)
关于c++ - 无帧速率限制的移动C++ SFML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18306101/