Pygame时间控制



我一直在思考如何在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)

最新更新