首页 > 解决方案 > 如何检测精灵在pygame中遇到了颜色

问题描述

我想检测精灵在pygame中遇到了颜色,我应该使用哪个函数来实现这个功能。

标签: python-3.xpygame

解决方案


尽管可以在您想要检查的表面上的任何点处获得颜色(此处get_at()的文档)。你需要找到你的精灵覆盖的新区域,它上次没有覆盖并检查其中的每个像素,如果其他东西在移动,你必须检查你的精灵现在是否与这些区域中的任何一个重叠并检查那。或者你可以认为这太复杂了,只是遍历你的精灵位置下的每个像素(还没有你绘制精灵)并检查那个颜色。

这是可能的,但可能不会很快。

另一种方法是,如果您知道这些颜色在哪里,您可以使用可以检查的矩形、圆形、精灵或蒙版(参见此处此处)标记这些区域。这通常要快得多。这些不必绘制,因此是不可见的。它们仅用于标记碰撞检查的区域。

如果您不知道背景或其他图像中颜色的确切位置,您可以使用pygame.mask.from_surface()或(此处此处pygame.mask.from_threshold()的文档)根据其中的颜色创建蒙版。


推荐阅读