Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Pygame中延迟敌人角色的出现_Python_Pygame_Clock_Timing - Fatal编程技术网

Python 在Pygame中延迟敌人角色的出现

Python 在Pygame中延迟敌人角色的出现,python,pygame,clock,timing,Python,Pygame,Clock,Timing,我正在Pygame中构建一个太空入侵者风格的游戏。敌人一次出现一个,每个循环都会发出与之相关的声音。实际上,这是一个听觉学习的心理学实验 我想在一个角色被杀后在游戏中延迟5秒,所以当一个角色被射杀时,他们的声音会很快消失,玩家必须等待5秒,等待下一个角色+声音的出现 这是我游戏类中的脚本,用于一次生成一个敌人。我正在使用psychopy的核心模块来测量时间,但我似乎不知道如何在不冻结游戏的情况下延迟敌人的攻击,即仍然允许玩家在不同的攻击集之间移动: if len(self.enemyA_list

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

我想在一个角色被杀后在游戏中延迟5秒,所以当一个角色被射杀时,他们的声音会很快消失,玩家必须等待5秒,等待下一个角色+声音的出现

这是我游戏类中的脚本,用于一次生成一个敌人。我正在使用psychopy的核心模块来测量时间,但我似乎不知道如何在不冻结游戏的情况下延迟敌人的攻击,即仍然允许玩家在不同的攻击集之间移动:

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 然后,每次通过循环向lastTime添加1。 上次时间+=1 然后你需要检查距离上次产卵有多长时间了。此外,您还需要决定两次繁殖之间的间隔时间。 所以


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

你能不能要求玩家在新玩家诞生时激活一些bool,并让bool切换为真,而不是运行上面的整个区块,因为玩家不在aliveI可以这样做来缩短一些东西,但我仍然必须运行大部分区块,播放敌人类型产生的声音和记录。这仍然不能解决我的问题,即延迟角色开始而不延迟所有其他游戏功能。我不太理解你的代码,但为什么不在角色开始代码上设置一个计时器,然后设置一个在死亡时启动的计时器。@user3330277在Sack overflow,我们投票或接受答案,而不仅仅是说谢谢,但没问题
if timeElapsed == FPS * secondsBetweenSpawns:
    generateEnemy()