我正在尝试创建太空射击游戏,问题是我需要在游戏循环中设置一定的延迟,以便可以控制射击。如果可能的话,延迟可以存储在变量中,以便我在游戏中可以控制它,谢谢。这是代码
当您使用空格键拍摄时,它已经有延迟,但是我想这只是因为键盘延迟,因为按下时会检测到
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()
答案 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
,以更改两次拍摄之间的时间长度