我试图制作一个防碰撞面具,以检测两个精灵是否相互碰撞,但是这根本不起作用,我立即崩溃了,你能帮我吗?
我的代码是:
Player.rect = Player.image.get_rect()
oc1.rect = oc1.image.get_rect()
mask_1 = pg.mask.from_surface(Player)
mask_2 = pg.mask.from_surface(oc1)
Cm = pg.sprite.collide_mask(mask_1, mask_2)
if Cm != None :
print('life - 1')
答案 0 :(得分:1)
请参阅pygame.sprite.collide_mask()
的文档:
使用蒙版检测两个精灵之间的碰撞。
collide_mask(SpriteLeft, SpriteRight) -> point
通过测试两个精灵之间的位掩码是否重叠来测试它们之间的冲突。如果子画面具有“遮罩”属性(用作遮罩),则从子画面图像创建遮罩。旨在作为冲突的回调函数传递给* collide函数。子画面必须具有“矩形”和可选的“蒙版”属性。
.collide_mask()
的参数必须是2个pygame.sprite.Sprite
对象,而不是2个遮罩pygame.mask.Mask
对象:
以下假设Player
和oc1
是pygame.sprite.Sprite
个对象:
Player.rect = Player.image.get_rect()
oc1.rect = oc1.image.get_rect()
Cm = pg.sprite.collide_mask(Player, oc1)
if Cm != None :
print('life - 1')