如何在 Pygame 中拥有无限的 FPS 并仍然控制程序的 FPS?
How to have unlimited FPS and still control the FPS of your program in Pygame?
我做了一些研究,发现了这个: and this: 。和我问的差不多。
因此 clock.tick(FPS)
将程序限制为 运行 FPS
。您这样做的原因是您可以控制程序的 FPS
并且它可以更轻松地处理诸如等待之类的时间。
但是我如何才能不受限制地 FPS
并仍然控制我的 FPS
等待等时间?据我了解,这是不可能的,因为 clock.tick(FPS)
限制了 FPS
并且不添加它意味着无限 FPS
但你无法控制 FPS
.
所以这似乎是一个天气问题来限制你 FPS
控制或让你的程序 运行 尽可能快,但没有控制。
总而言之,我要问的是四个问题;
- 限制
FPS
的优缺点
- 不限制
FPS
并继续自然 FPS
计划的利弊
- 是否可以无限
FPS
并且仍然控制我的 FPS
等待等时间?
- 如果是,怎么做?
你必须根据帧率计算每帧的移动。
pygame.time.Clock.tick
returns 自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。
当您不带参数调用它时(framerate=0
),FPS 是无限的。
定义玩家每秒应该移动的距离(以像素为单位)(move_per_second
)。然后计算应用程序循环中每帧的距离:
move_per_second = 500 # 500 is just an example and means 500 pixels/second
run = True
clock = pygame.time.Clock()
while run:
ms_frame = clock.tick() # get the milliseconds passed since the last frame
move_per_frame = move_per_second * ms_frame / 1000
# [...]
但是,使用这种方法,您是在浪费 CPU 时间,而且您不会看到明显的差异。缺点是你没有恒定的帧率,你必须根据最后一帧经过的时间来计算所有动画和移动。
我做了一些研究,发现了这个:
因此 clock.tick(FPS)
将程序限制为 运行 FPS
。您这样做的原因是您可以控制程序的 FPS
并且它可以更轻松地处理诸如等待之类的时间。
但是我如何才能不受限制地 FPS
并仍然控制我的 FPS
等待等时间?据我了解,这是不可能的,因为 clock.tick(FPS)
限制了 FPS
并且不添加它意味着无限 FPS
但你无法控制 FPS
.
所以这似乎是一个天气问题来限制你 FPS
控制或让你的程序 运行 尽可能快,但没有控制。
总而言之,我要问的是四个问题;
- 限制
FPS
的优缺点
- 不限制
FPS
并继续自然FPS
计划的利弊 - 是否可以无限
FPS
并且仍然控制我的FPS
等待等时间? - 如果是,怎么做?
你必须根据帧率计算每帧的移动。
pygame.time.Clock.tick
returns 自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。
当您不带参数调用它时(framerate=0
),FPS 是无限的。
定义玩家每秒应该移动的距离(以像素为单位)(move_per_second
)。然后计算应用程序循环中每帧的距离:
move_per_second = 500 # 500 is just an example and means 500 pixels/second
run = True
clock = pygame.time.Clock()
while run:
ms_frame = clock.tick() # get the milliseconds passed since the last frame
move_per_frame = move_per_second * ms_frame / 1000
# [...]
但是,使用这种方法,您是在浪费 CPU 时间,而且您不会看到明显的差异。缺点是你没有恒定的帧率,你必须根据最后一帧经过的时间来计算所有动画和移动。