我目前正在使用 PyGame (Python 3) 制作游戏,我正在寻找一种让游戏以固定 FPS 运行的方法。
游戏的大部分内容都位于一个巨大的 while 循环中,每个 tick 都会在其中获取用户输入、渲染 Sprite 等。我的目标是能够设置一个固定的 FPS,使游戏在快或慢的计算机上以相同的速度运行。
当然,我可以使用pygame中的时钟模块:
clock = pygame.time.Clock()
然后在每个循环中调用它:
clock.tick(30)
但这将使游戏的 CAPPED 保持在 30 FPS。因此,如果我将其设置为 500 FPS,它可能仍会像以前一样快速运行。我的目标是,如果我将它设置为 500 FPS,它将以与 500 FPS 相同的速度运行...
那么是否有可能使游戏以固定的 FPS 运行(或产生这样的幻觉),而不管计算机的速度如何 - 或者至少通过使用某种跳帧算法以相同的速度运行?
抱歉,如果该措辞相当困惑。
最佳答案
clock.tick 返回自上次调用 clock.tick 以来的时间。使用该值并在移动时将所有速度乘以它。 示例
dt = clock.tick(60)
player.position.x += player.xSpeed * dt
player.position.y += player.ySpeed * dt
这样你的玩家将始终以相同的速度移动,而不管你在 clock.tick()
函数中输入了什么。
重要的是每帧只调用一次clock.tick()
。
关于python - 在 Pygame、Python 3 中设置固定 FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35617246/