pygame如何设置自动拍摄的一定延迟

时间:2018-12-28 16:41:05

标签: python pygame

我正在尝试创建太空射击游戏,问题是我需要在游戏循环中设置一定的延迟,以便可以控制射击。如果可能的话,延迟可以存储在变量中,以便我在游戏中可以控制它,谢谢。这是代码

当您使用空格键拍摄时,它已经有延迟,但是我想这只是因为键盘延迟,因为按下时会检测到

class Player(pygame.sprite.Sprite):
    ........
    def shoot(self):
        bullet = Bullet(self.rect.centerx, self.rect.top)
        all_sprites.add(bullet)
        bullets.add(bullet)

class Bullet(pygame.sprite.Sprite):
      def __init__(self, x, y):
          pygame.sprite.Sprite.__init__(self)
          self.image = pygame.Surface((10, 20))
          self.image.fill(RED)
          self.rect = self.image.get_rect()
          self.rect.bottom = y
          self.rect.centerx = x
          self.speedy = -10

      def update(self):
         self.rect.y += self.speedy
         # kill if it moves off the top of the screen
         if self.rect.bottom < 0:
             self.kill()

#Sprites
all_sprites = pygame.sprite.Group()
bullets = pygame.sprite.Group()
player = Player()
all_sprites.add(player)

running = True
while running:
    player.shoot()

1 个答案:

答案 0 :(得分:0)

创建一个变量,例如shootTime,并在每个循环中对其进行迭代(添加一个),然后仅在变量达到20时才调用hoot函数。调用hoot变量后,请将变量设置回零

all_sprites = pygame.sprite.Group()
bullets = pygame.sprite.Group()
player = Player()
all_sprites.add(player)
shootTime = 0

running = True
while running:
    shootTime += 1
    if shootTime == 20:
        player.shoot()
        shootTime = 0

您可以在20中更改数字if shootTime == 20,以更改两次拍摄之间的时间长度