我当时使用Pygame和PyOpenGL在Python3上制作游戏。当我在不同的计算机上测试游戏时,它们都以不同的fps和速度运行代码。
示例代码:
#...
while True:
character.x += 5
character.draw()
pygame.display.flip() #Updates the screen
由于一台计算机可以多次循环运行而少了一些,因此,在同一时间在两台计算机上运行代码后,字符的x位置在特定时间将有所不同。如何在屏幕上获取当前fps,并获得一个根据fps缩放对象速度的标量?
谢谢,
诺亚
您需要创建一个pygame.time.Clock的实例,然后在每个循环中调用一次Clock.tick以设置帧速率并获取经过的时间
clock = pygame.time.Clock()
while True:
delta = clock.tick(60) # 60 FPS
将移动速度乘以此增量,可获得平滑一致的动画(此处可能需要减小增量值,因为经过的毫秒数可能会很大)
character.x += 5 * delta