小编ahe*_*m11的帖子

无法弄清楚如何检查两个精灵之间的蒙版碰撞

我在同一组中有两个不同的精灵,变量“玩家”和“地面”。它们都是不同的类别,表面上都带有面具。这条线是他们两个班的。

self.mask = pygame.mask.from_surface(self.surface)
Run Code Online (Sandbox Code Playgroud)

其表面中使用的图像使用了“convert_alpha()”,因此其中一部分是透明的,并且蒙版应该对它们起作用。地面是几个平台,我想检查碰撞,这样我就可以将玩家保持在地面上,并在它们不在不透明部分上时让它们掉落。

if pygame.sprite.collide_mask(player,ground):
        print("collision")
else:
        print("nope")
Run Code Online (Sandbox Code Playgroud)

即使玩家精灵落在彩色地面精灵像素所在的位置,也会打印“不”。因此,“collide_mask()”的文档表示,当没有碰撞时,它返回“NoneType”。所以我尝试了这个。

if pygame.sprite.collide_mask(player,ground)!= NoneType:
        print("collision")
Run Code Online (Sandbox Code Playgroud)

无论玩家在哪里,都会打印“碰撞”(我为玩家设置了跳跃、向左和向右移动)。我昨天问了一个关于碰撞的问题,但没有得到有帮助的答案。我被告知要压缩我在问题中提交的代码,所以希望我能够很好地解释这一点,而无需发布所有 90 行。我在这里检查了很多其他问题,它们似乎都有点不同,所以我很困惑(而且相当新)。强调两个精灵都在同一组中,因此我无法让 spritecollide() 工作。

python pygame collision-detection sprite pygame-surface

3
推荐指数
1
解决办法
470
查看次数