【发布时间】:2016-03-26 19:29:19
【问题描述】:
每个 pygame 都有一个如下所示的游戏循环:
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
根据get_ticks()的api:
返回自调用 pygame.init() 以来的毫秒数。 在 pygame 初始化之前,它总是为 0。
但是clock.tick():
这个方法应该每帧调用一次。它将计算有多少 .自上次调用以来已经过去了毫秒。
如果您传递可选的帧速率参数,则函数将延迟以保持游戏运行速度低于给定的每秒滴答数。这可以用来帮助限制游戏的运行速度。通过每帧调用一次 Clock.tick(40),程序将永远不会以每秒超过 40 帧的速度运行。
我有点疑惑,是不是说clock.tick()直接影响到游戏开始后经过了多少毫秒?
所以clock.tick(40) 意味着我每秒“发出” 40 帧,而 while 循环每秒运行 40 次?
我没有看到 fps 和 ticks 之间的关系。
更新:
我实际上只是对其进行了测试,无论您给tick() - 0.1 或30 或60 提供什么fps,get_ticks() 仍然以mls 为单位返回实时时间。
看来clock.tick() 只是设置了游戏应该运行多快或while 循环应该多久更新一次,运行一次。
不过还是有点疑惑,欢迎其他答案。
【问题讨论】:
标签: python pygame frame-rate pygame-clock pygame-tick