0

这是一个示例代码:

import pygame
import sys

pygame.init()
screen = pygame.display.set_mode((1000, 500))

clock = pygame.time.Clock()

square = pygame.Surface((350, 350))
square.fill((0, 0, 0))
x_pos = 1000

while True:
    screen.fill((255, 255, 255))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    if x_pos <= -350:
        x_pos = 1000
    x_pos -= 5
    screen.blit(square, (x_pos, 50))

    clock.tick(60)
    pygame.display.update()

问题:

1 - .tick() 方法是否定义了您的游戏运行的 fps 数?如果不是,它实际上是做什么的?

2 - .tick() 方法中传递的值越高,示例中的方块向左移动的速度越快,为什么会发生这种情况?

3 - 假设 .tick() 方法定义了你的游戏将以多少 fps 运行,在一些游戏中,如 valorant、英雄联盟和任何其他游戏,当 fps 更高时,游戏只会看起来更流畅,而不是更快就像在示例中一样,有什么理由吗?

谢谢!

4

1 回答 1

0
  1. pygame.tick()只是fps。您可以在https://www.pygame.org/docs/ref/time.html#pygame.time.Clock.tick阅读更多相关信息

  2. 您可以将 FPS 视为 while 循环每秒运行的次数。如果x_pos += 1每帧都运行,FPS 越高,该行代码运行的次数就越多;作为回报,这行代码运行的次数越多,方块移动的越快。

  3. 游戏在更高 FPS 下看起来更流畅的原因是显示器的刷新率 (Hz)。刷新率实际上是您的显示器更新的次数,这意味着如果您的 FPS 低于您的 Hz,它会看起来很笨重。任何高于显示器刷新率的 FPS 都不会以任何方式影响您的体验。

    其他游戏在 FPS 较高的情况下不会变得更快的原因是因为 delta time,它占用了每帧之间经过的时间,并根据经过的毫秒数来改变移动速度。(请随时在评论中添加更多/纠正我)

    如果您对如何在 pygame 中实现增量时间感到好奇,我建议您观看https://www.youtube.com/watch?v=XuyrHE6GIsc

于 2022-02-09T01:53:17.623 回答