我一直在思考如何在pygame中控制时间。也就是说,当if语句为True时,我只希望它为True几秒钟,哪个是最好的pygame.time-object?示例
if p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560:
self.kill()
p.image.fill(red)
这是一个球反弹碰撞,每当这个语句为True时,我希望它在一段时间内保持True。我该怎么做?:D
您尝试过使用函数pygame.time.get_ticks()
吗?
pygame.time.get_ticks()
输出当前刻度编号,刻度以毫秒表示。
它是这样使用的:
begin = pygame.time.get_ticks()
while pygame_loop:
time_now = pygame.time.get_ticks()
if time_now-begin > 1000:
begin=pygame.time.get_ticks()
statement = True
您的代码将如下所示:
timeout = 1000
last_true = -timeout
if (p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560):
last_true = pygame.time.get_ticks()
if pygame.time.get_ticks() < last_true + timeout:
self.kill()
p.image.fill(red)
试试看。它不是简单地检查您的语句是否求值为True
,而是检查它是否在您指定的最后一段特定时间内求值为True
。请参阅Time.Time().
import time
%this is the time in seconds you wish the loop to be treated as true
timeout = 1.0
last_true = -timeout
if (p.rect.left < self.rect.centerx < p.rect.right and self.rect.bottom >= 560):
last_true = time.time()
if time.time() < last_true + timeout:
self.kill()
p.image.fill(red)