在Pygame中延迟敌人角色的开始

时间:2014-02-19 22:45:38

标签: python pygame clock timing

我正在Pygame中构建一个太空入侵者风格的游戏。敌人一次进入一个,每个循环声音与它们相关(这实际上是听觉学习中的心理学实验)

我希望在角色被杀之后在游戏中延迟5秒 - 因此,当一个角色被击中时,他们的声音会快速消失,并且玩家必须等待5秒才能开始下一个角色+声

这是我在Game类中的脚本,用于一次生成一个敌人。我正在使用心理模块的核心模块来测量时间,但我似乎无法弄清楚如何在不冻结游戏的情况下延迟敌人的开始(即仍然允许玩家在开始之间移动):

if len(self.enemyA_list) == 0 and len(self.enemyB_list) == 0 and len(self.enemyC_list) == 0:
    self.enemy = Enemy()

    #Increase speed, variability of character onset based on how many characters have been created
    if len(self.dead_enemies) == 2 or len(self.dead_enemies) == 3:
        self.enemy.x_speed *= 1.75
        self.enemy.y_speed *= 1.75
    elif len(self.dead_enemies) == 4:
        self.enemy.x_speed *= 2
        self.enemy.y_speed *= 2
    timer = core.Clock()
    timer.add(2)
    if timer.getTime()>=0:
        timer = 0
        self.enemy.generate() #generate enemy offscreen and start playing sound
        if self.enemy.enemy_type == 'A':
            self.enemyA_list.add(self.enemy)
            self.enemy.sound.out() #play enemy sound
            self.enemy.env.play()
        if self.enemy.enemy_type == 'B':
            self.enemyB_list.add(self.enemy)
            self.enemy.sound.out()
            self.enemy.env.play()
        if self.enemy.enemy_type == 'C':
            self.enemyC_list.add(self.enemy)
            self.enemy.sound.out()
            self.enemy.env.play()
            self.all_sprites_list.add(self.enemy)

1 个答案:

答案 0 :(得分:0)

在您的主游戏循环中,您应该创建一个变量,记录自上次生成以来已经过了多长时间。 声明一个变量。     lastTime = 0 然后每次通过循环向lastTime添加1。     lastTime + = 1 然后你需要检查自上次生成以来它已经存在了多长时间。您还需要确定生成之间需要多少秒。 所以......

if timeElapsed == FPS * secondsBetweenSpawns:
    generateEnemy()

这将延迟每个产卵。请注意,这将需要FPS和FPSClock。