在Pygame中的Aliens.py中添加碰撞

时间:2014-04-14 04:26:57

标签: python function for-loop parameters pygame

我在Pygame示例aliens.py

中添加冲突时遇到问题

我想添加一个碰撞检测,让外星人的UFO在相互碰撞时爆炸。

以下是程序中碰撞的代码:

# Detect collisions
        for alien in pygame.sprite.spritecollide(player, aliens, 1):
            boom_sound.play()
            Explosion(alien)
            Explosion(player)
            SCORE = SCORE + 1
            player.kill()

        for alien in pygame.sprite.groupcollide(shots, aliens, 1, 1).keys():
            boom_sound.play()
            Explosion(alien)
            SCORE = SCORE + 1

        for bomb in pygame.sprite.spritecollide(player, bombs, 1):
            boom_sound.play()
            Explosion(player)
            Explosion(bomb)
            player.kill()

        #for alien in pygame.sprite.spritecollide(aliens):
            #boom_sound.play()
            #Explosion(alien)

最后一个for循环是我创建的循环。我显然需要3个参数,但我不确定需要什么其他参数。请帮助!

1 个答案:

答案 0 :(得分:1)

来自pygame.sprite(http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.spritecollide)的手册页实际上有4个参数,它们是:

  1. 精灵:你想检查碰撞
  2. 组:检查与这些
  3. 的碰撞
  4. dokill:表示在检测到碰撞时杀死或不杀死的动作
  5. collided(可选):用于检测冲突的回调函数
  6. 我猜你想要发现两个外星人不明飞行物之间的碰撞。你需要这样的东西:

    for a in aliens :
        for alien in pygame.sprite.spritecollide(a, aliens, 1):
            boom_sound.play()
            Explosion(alien)