我现在正在用 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/