如何根据 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
我正在使用 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