如何根据 fps 为屏幕上的每次更新缩放移动对象的速度,以便它可以在任何给定的 fps 下保持相同的移动速度?

How to scale the speed of a moving object for each update on the screen according to fps so it can be the same moving speed at any given fps?

我正在使用 Pygame 和 PyOpenGL 在 Python3 上制作游戏。当我在不同的计算机上测试游戏时,它们都 运行 代码以不同的 fps 和速度。

示例代码:

#...
while True:
    character.x += 5
    character.draw()
    pygame.display.flip() #Updates the screen

由于有的电脑可以运行循环多一些,有的少一些,所以运行在两台电脑上运行编码后,字符的x位置会在某个时刻不同同时。如何获得屏幕上的当前 fps 并获得根据 fps 缩放对象速度的标量?

提前致谢,

诺亚

您需要在每个循环中创建一个 pygame.time.Clock and then call Clock.tick 的实例来设置帧率并获取经过的时间

clock = pygame.time.Clock()
while True:
    delta = clock.tick(60) # 60 FPS

将你的移动速度乘以这个增量以获得平滑一致的动画(你可能需要减少此处的增量值,因为它经过的毫秒数可能很大)

    character.x += 5 * delta