我一直在想pygame如何控制时间。 也就是说,当一个if语句为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)
这是一个球弹跳碰撞,每当这个声明为真时,我希望它只保留一段时间。我怎样才能做到这一点? :d
答案 0 :(得分:1)
给它一个机会。它不是简单地检查您的对帐单是否向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)
答案 1 :(得分:1)
您是否尝试过使用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)