c++ - 没有帧率限制的移动 C++ SFML

标签 c++ limit game-physics sfml

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

相关文章:

c++ - 通常如何进行内存对齐?

mysql - 如何破解 MySQL GROUP_CONCAT 以获取有限数量的行?

javascript 函数限制

ios - 无论速度如何,如何对每次碰撞施加相等的力? - swift ,场景套件

java - Box2D - 如何防止靠近墙壁时连续跳跃

c++ - 如何使用 log4cpp 一次记录多个变量?

c++ - 包括CallbackGroups后ROS通信未响应

c++ - retranslateUi() 清除 QLabel 文本

Laravel 事件超出 Pusher 允许的限制

Java - 小行星 - 二维加速