面对`Player`时,如何让`Enemy`消失?

How to make a `Enemy` disappear when he faces with `Player`?

我为Player做了几颗心。当他面对 Enemy 时,Enemy 不会消失,所以他可能会从我的精灵中得到 1 到 3 心而不是 1。我尝试使用函数 self.kill(),但是,没救了。我必须做什么?

class Enemy(pygame.sprite.Sprite):
    def __init__(self):
        super(Enemy, self).__init__()
        self.images = []
        self.images.append(pictures_mouse[0])
        self.images.append(pictures_mouse[1])
        self.images.append(pictures_mouse[2])
        self.images.append(pictures_mouse[3])
        self.index = 0
        self.image = self.images[self.index]
        self.rect = self.image.get_rect()
        #[...]
    def update(self):
        self.rect.move_ip(-2, 0)
        if self.rect.right <= 0:
            self.kill()
#[...]        
enemy = Enemy()
enemies = pygame.sprite.Group()
running = True
while running:
    clock.tick(FPS)
    for event in pygame.event.get():
         elif event.type == ADDENEMY:
            new_enemy = Enemy()
            enemies.add(new_enemy)
            all_sprites.add(new_enemy)
#[...]
    hits_4 = pygame.sprite.spritecollide(player, enemies, False)
        if hits_4:
             health -= 1
             if health == 0:
                 running = False

如果你想 kill 敌人与玩家发生碰撞,你必须设置 pygame.sprite.spritecollidedoKill 参数:

hits_4 = pygame.sprite.spritecollide(player, enemies, False)

hits_4 = pygame.sprite.spritecollide(player, enemies, True)

注意,pygame.sprite.spritecollide returns 一个列表,其中包含与 Sprit 发生碰撞的组中的所有精灵。因此你也可以手动 kill 敌人:

hits_4 = pygame.sprite.spritecollide(player, enemies, False)
for hit_enemy in hits_4:
    
    hit_enemy.kill()
    
    health -= 1
    if health == 0:
        running = False