正如在标题中所讨论的,我在屏蔽相同的图像时遇到了问题
#initalising the masks
Invader1= pygame.image.load('Space_invaders_character_1_1.png').convert_alpha()
Invader1= pygame.transform.scale(Invader11, (40,30))
Invader1_mask = pygame.mask.from_surface(Invader11)
Invader1_mask= Invader11_mask.scale((70,40))
Invader2= pygame.image.load('Space_invaders_character_2_1.png').convert_alpha()
Invader2= pygame.transform.scale(Invader21, (40,30))
Invader2_mask = pygame.mask.from_surface(Invader21)
Invader2_mask= Invader11_mask.scale((70,40))
Invader3= pygame.image.load('Space_invaders_character_3_1.png').convert_alpha()
Invader3= pygame.transform.scale(Invader31, (40,30))
Invader3_mask = pygame.mask.from_surface(Invader31)
Invader3_mask= Invader11_mask.scale((70,40))
#drawing characters
def drawEnemies (invX,invY):
for num in range (1,11):
invX = invX + 50
gameDisplay.blit(Invader32, (invX,invY))
gameDisplay.blit(Invader32, (invX,invY-50))
gameDisplay.blit(Invader22, (invX,invY-100))
gameDisplay.blit(Invader22, (invX,invY-150))
gameDisplay.blit(Invader12, (invX, invY -200))
while lives > 0:
offset = (bulletX -invX, bulletY - invY)
result = Invader11_mask.overlap(bullet_mask, offset)
当然,这不是我的全部代码,但是,我希望您看到我正在尝试做什么。本质上,我试图循环创建一个特定的入侵者(是的,来自太空入侵者),然而,这些面具不是与其他入侵者一起创建的,就是没有移动。有人能帮我吗? 谢谢
对于您的问题,有意义的答案是停止您现在正在做的事情,并开始将^{} 和^{} 类与^{} 函数一起使用
你不想为游戏中的每一个东西创建几个全局变量。您需要类的实例(通常使用
Sprite
),并将它们添加到列表中(通常为Group
)因此,为您的入侵者创建一个继承自
Sprite
的类,并给他们一个mask
属性,如下所示:为您的子弹和入侵者创建一个
Group
,然后您可以通过以下方式检查冲突:相关问题 更多 >
编程相关推荐