我正在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)
答案 0 :(得分:0)
在您的主游戏循环中,您应该创建一个变量,记录自上次生成以来已经过了多长时间。 声明一个变量。 lastTime = 0 然后每次通过循环向lastTime添加1。 lastTime + = 1 然后你需要检查自上次生成以来它已经存在了多长时间。您还需要确定生成之间需要多少秒。 所以......
if timeElapsed == FPS * secondsBetweenSpawns:
generateEnemy()
这将延迟每个产卵。请注意,这将需要FPS和FPSClock。