如何找到精灵在团队中的位置?

2024-05-16 03:47:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个游戏在pygame,并试图找出一个方法,使敌人爆炸。在

敌人有他们的阶级:

class Enemy(pygame.sprite.Sprite):

    def __init__(enemy, x, y):
        pygame.sprite.Sprite.__init__(enemy)
        enemy.image = ENEMYIMAGE.convert()
        enemy.mask = pygame.mask.from_surface(enemy.image)
        enemy.rect = enemy.image.get_rect()
        enemy.rect.x = x
        enemy.rect.y = y

在main()中反复调用,然后添加到组中:

^{pr2}$

激光器的制作方式类似,也就是说,有一个在main()中调用的Laser类。当这个类被称为激光器时,激光器被添加到一个组中。在

我试图让敌人爆炸:

if pygame.sprite.groupcollide(weapon_group, enemy_group, False, True):
    EXPLOSIONSOUND.play()
    EXPLOSIONANIM.play()
    EXPLOSIONANIM.blit(screen, (weapon.rect.x, weapon.rect.y))

这样可以把敌人从群中除掉,使之

enemy_group.draw(screen)

不吸引被射杀的敌人。在

但是,爆炸实际上发生在玩家身上。有没有人可以用更好的方式重写它?在


Tags: rectimageplayinitmain方式groupmask
1条回答
网友
1楼 · 发布于 2024-05-16 03:47:41

尝试使用返回值pygame.sprite.groupcollide对结果进行排序。代替你现在所拥有的,试试这个:

for enemy,colls in pygame.sprite.groupcollide(enemy_group, weapon_group, True, False):
    if colls:
        EXPLOSIONSOUND.play()
        EXPLOSIONANIM.play()
        EXPLOSIONANIM.blit(screen, enemy.rect.center)

pygame.sprite.groupcollide返回一个dict,其键是组1中的每个子元素,其值是组2中它们重叠的子元素。我颠倒了你们小组的顺序,使逻辑更简单。在

相关问题 更多 >