对于我的pygame项目,我必须检测在屏幕上移动的各种.png图像之间的碰撞。
我把图像放在精灵中,精灵放在组内,然后我用它:
pygame.sprite.spritecollide(perso, zombie_group, False)
然而,有时,我的图像不会触摸,但pygame会检测到碰撞...... 这是因为我的图像是透明的边框。
透明边框碰撞,pygame检测到:(
是否有任何想法阻止透明边框碰撞?
答案 0 :(得分:1)
好的精灵会拍摄他无法检测到的图像,如果它是在透明的BG或颜色bg上,他现在基本上只是看到一个矩形。
如果您使用不规则形状并且矩形近似不够,我建议使用collide_mask同时检查masks这可能是您想要的
<强>更新强>
关于tutorial的表现:
还有其他方法可以做到这一点,使用ANDing sprite mask等等, 但无论如何你在pygame中这样做,它可能会太慢。 对于大多数游戏来说,最好只做'次直接碰撞' - 为每个精灵创建一个比实际小一点的矩形 图像,并将其用于碰撞。它会快得多, 在大多数情况下,玩家不会注意到准确度。