Pygame级别的位掩码检查优化?

时间:2013-11-24 10:31:33

标签: python optimization pygame bitmask

Pygame为精灵提供了一个非常整洁的位掩码碰撞功能,但是在比较大图像时它真的很慢。我有我的关卡图像,当它是400x240时效果很好,但当我将分辨率更改为(很多)更大时,突然游戏无法播放,因为它太慢了。

我很好奇是否有办法以某种方式裁剪精灵的位掩码,所以它不需要做那么多的计算。或者,另一种方法是将整个阶段精灵分成不同的“面板”,并对最近的一个(或者如果他在面板的边缘上,则为四个或两个)进行碰撞检查。但我不知道如何将图像分成几个精灵。此外,如果您有任何其他建议,他们将不胜感激。

我已经看到互联网上的许多地方说不要打扰位掩码级别的冲突,因为它太慢了,我应该使用基于瓦片的碰撞。虽然,我认为bitmask会使它变得更灵活,并且它会提供级别破坏的机会(就像在蠕虫游戏中一样),所以如果它是位掩码我更喜欢它。

我想我已经解释得足够了,不需要发布我的代码,但请告诉我你真的需要它。

非常感谢!

1 个答案:

答案 0 :(得分:0)

好吧,我为它制定了一个实际上不是这些东西的修复程序......基本上,我意识到我一次只与一个像素碰撞一个像素,所以我使用了Mask.get_at( )功能。有点生气,这在我之前没有发生过。虽然,我听说使用它可能会很慢,所以如果有人愿意提供更快的get_at()替代方案,那就太好了。