如何在Pygame中拥有无限的FPS并仍然控制程序的FPS?

2024-06-05 13:55:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一些研究,发现了这个:{a1}和这个:{a2}。这与我的要求相似

因此clock.tick(FPS)限制程序在该FPS处运行。这样做的原因是,您可以控制程序的FPS,并使等待等时间变得更容易

但是,我怎样才能不受限制地FPS并且仍然控制我的FPS等待之类的时间呢?根据我的理解,这是不可能的,因为clock.tick(FPS)FPS加上上限,而不加上它意味着无限FPS,但您无法控制FPS

所以这似乎是一个天气的问题来限制你的控制或者让你的程序尽可能快地运行,但没有控制

总之,我要问的是四个问题

  1. 限制你的FPS的利弊
  2. 不限制你的FPS和继续自然的FPS程序的利弊
  3. 有没有可能拥有无限的FPS并且仍然控制我的FPS等待之类的时间
  4. 如果是,怎么做

Tags: 程序a2a1时间原因天气fps控制程序
1条回答
网友
1楼 · 发布于 2024-06-05 13:55:26

您必须根据帧速率计算每帧的移动

^{}返回自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。 当您在没有参数(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时间,并且看不到明显的区别。缺点是你没有固定的帧速率,你必须根据最后一帧中经过的时间来计算所有的动画和动作

相关问题 更多 >