我正在做一个游戏在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)
不吸引被射杀的敌人。在
但是,爆炸实际上发生在玩家身上。有没有人可以用更好的方式重写它?在
尝试使用返回值
pygame.sprite.groupcollide
对结果进行排序。代替你现在所拥有的,试试这个:pygame.sprite.groupcollide
返回一个dict,其键是组1中的每个子元素,其值是组2中它们重叠的子元素。我颠倒了你们小组的顺序,使逻辑更简单。在相关问题 更多 >
编程相关推荐