因此,我正在运行collide_mask检查,以在与玩家精灵碰撞时删除生物实例。

pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask)


我很难过的是,使爆炸动画发生在“小怪”位置的特定“小怪”上。

minuspoints = pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask)
    for hit in minuspoints:
        life-=5
        score+=1
        if cash-1>=0:
            cash-=1
        else:
            life-=5
        enemies-=1
        if moo==0:
            collision.play()
            ensmallpop.play()

        # Check which mob was hit
        for m in mobs:
            pass

#popAnim
        popco = m.update(pos)


如何确定哪个暴民被击中?

我有1700行代码(也许编写的效率不高),所以在这一点上,我要花很多时间来思考这是如何工作的。

如果您需要任何其他信息,请询问!

提前致谢。

最佳答案

minuspoints列表包含与player碰撞的小怪,因此您只需在hit.rect.center位置播放爆炸动画即可。我建议将变量名称minuspointshit更改为collided_mobsmob

collided_mobs = pygame.sprite.spritecollide(player, mobs, True, pygame.sprite.collide_mask)
for mob in collided_mobs:
    explosion_position = mob.rect.center
    # Now create the explosion at `explosion_position`.

关于python - Sprite 碰撞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44088756/

10-16 08:47