如何根据fps缩放屏幕上每次更新的移动对象的速度,使其在任何给定fps下都可以是相同的移动速度?

问题描述 投票:0回答:1

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

示例代码:

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

由于一台计算机可以多次循环运行而少了一些,因此,在同一时间在两台计算机上运行代码后,字符的x位置在特定时间将有所不同。如何在屏幕上获取当前fps,并获得一个根据fps缩放对象速度的标量?

谢谢,

诺亚

python pygame frame-rate
1个回答
0
投票

您需要创建一个pygame.time.Clock的实例,然后在每个循环中调用一次Clock.tick以设置帧速率并获取经过的时间

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

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

    character.x += 5 * delta
© www.soinside.com 2019 - 2024. All rights reserved.