在 Pygame、Python 中设置固定 FPS 3
Setting a fixed FPS in Pygame, Python 3
我目前正在使用 PyGame (Python 3) 制作游戏,并且我正在寻找以固定 FPS 运行 制作游戏的方法。
游戏的大部分内容都位于一个巨大的 while 循环中,每次 tick 都会在其中获取用户输入、渲染精灵等。我的目标是能够设置一个固定的 FPS,使游戏 运行 在快或慢的计算机上以相同的速度。
我当然可以使用pygame中的时钟模块:
clock = pygame.time.Clock()
然后在每个循环中调用它:
clock.tick(30)
但这将使游戏的 CAPPED 保持在 30 FPS。因此,如果我将它设置为 500 FPS,它可能仍然 运行 和以前一样快。我的目标是,如果我将它设置为 500 FPS,它将 运行 以与 500 FPS 相同的速度...
那么是否有可能使游戏 运行 处于固定的 FPS(或对此产生幻觉),而不考虑计算机的速度 - 或者至少 运行 同时通过使用一些跳帧算法来提高速度?
抱歉,如果该措辞相当混乱。
clock.tick returns 自上次调用 clock.tick 以来的时间。使用该值并在移动时将所有速度乘以它。
例子
dt = clock.tick(60)
player.position.x += player.xSpeed * dt
player.position.y += player.ySpeed * dt
这样你的玩家将始终以相同的速度移动,而与你在 clock.tick()
函数中输入的内容无关。
重要的是每帧只调用一次clock.tick()
。
我目前正在使用 PyGame (Python 3) 制作游戏,并且我正在寻找以固定 FPS 运行 制作游戏的方法。
游戏的大部分内容都位于一个巨大的 while 循环中,每次 tick 都会在其中获取用户输入、渲染精灵等。我的目标是能够设置一个固定的 FPS,使游戏 运行 在快或慢的计算机上以相同的速度。
我当然可以使用pygame中的时钟模块:
clock = pygame.time.Clock()
然后在每个循环中调用它:
clock.tick(30)
但这将使游戏的 CAPPED 保持在 30 FPS。因此,如果我将它设置为 500 FPS,它可能仍然 运行 和以前一样快。我的目标是,如果我将它设置为 500 FPS,它将 运行 以与 500 FPS 相同的速度...
那么是否有可能使游戏 运行 处于固定的 FPS(或对此产生幻觉),而不考虑计算机的速度 - 或者至少 运行 同时通过使用一些跳帧算法来提高速度?
抱歉,如果该措辞相当混乱。
clock.tick returns 自上次调用 clock.tick 以来的时间。使用该值并在移动时将所有速度乘以它。 例子
dt = clock.tick(60)
player.position.x += player.xSpeed * dt
player.position.y += player.ySpeed * dt
这样你的玩家将始终以相同的速度移动,而与你在 clock.tick()
函数中输入的内容无关。
重要的是每帧只调用一次clock.tick()
。