如何控制子弹的射速?

时间:2015-01-23 16:52:01

标签: python pygame python-2.6

我已经工作了大约2-3天就如何控制我的火速而且我找不到成功的方法。我在这里看到过类似/相同的问题,但我找不到我想要的答案。在我的游戏中我拥有它所以有一个玩家一个机器人,它的1v1战斗。

我的子弹课程:

class Bullet(pygame.sprite.Sprite):

    change_y = 0
    list = pygame.sprite.Group()
    def __init__(self, y):
        pygame.sprite.Sprite.__init__(self)

        self.image = pygame.Surface([6,6])
        self.image.fill(BLACK)
        self.rect = self.image.get_rect()
        self.change_y = y

        Bullet.list.add(self)

    def update(self):

        self.rect.y += self.change_y

我的激活/射击动作:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
        if self.player.ammo > 0:
            self.shooting = True
        elif event.type == pygame.KEYUP and event.key == pygame.K_SPACE:
            self.shooting = False

if self.shooting == True:

    self.bullet = Bullet(-45)
    self.bullet.rect.x = self.player.rect.x + 11
    self.bullet.rect.y = self.player.rect.y - 14
    Bullet.list.add(self.bullet)
    for bullet in Bullet.list:
        if self.player.ammo > 0:
             self.player.ammo -= 1

我还是比较新的。我尝试了很多不同的方式,一些非常愚蠢的方式。如果你需要,我可以给你更多的代码。任何帮助都很棒,很明显我希望我的子弹在两次射击之间有更多的时间,因为截至目前它每秒射出60发子弹。此外,我在这里,我也可以请求重新加载的帮助,因为现在我所拥有的是

if self.player.ammo == 0:
        self.shooting = False
        self.player.ammo = 30

1 个答案:

答案 0 :(得分:0)

您可以测量拍摄之间的时间。

例如:

if self.shooting == True:
  if time.Time() - self.last_shot > self.shot_delay:
    self.bullet = Bullet(-45)
    self.bullet.rect.x = self.player.rect.x + 11
    self.bullet.rect.y = self.player.rect.y - 14
    Bullet.list.add(self.bullet)
    self.last_shot = time.Time()
    for bullet in Bullet.list:
      if self.player.ammo > 0:
      self.player.ammo -= 1

self.shot_delay是您想要的延迟。