我正在使用Pygame用Python制作游戏,该游戏在游戏开始之前包括一个小型化身制作商,但是除了创建具有88种不同发型和颜色组合的大型Sprite表外,我还可以使用每个发型的通用.png图像并在游戏中为其应用颜色?
这些发型将另存为具有Alpha和抗锯齿功能的.png图像,因此它们不仅仅是一种颜色。我有8种不同的发型和11种不同的颜色。将它们作为精灵表加载并在游戏中剪辑将不是问题,但是如果有一种方法可以在游戏中应用颜色(或色相),那么不仅在内存上会更容易,而且它将为更多可能性打开大门。
答案 0 :(得分:1)
如果图像是具有透明背景和白色(255、255、255)蒙版的“蒙版”图像,则可以轻松地对图像进行“着色”。
加载图像:
image = pygame.image.load(imageName)
生成具有相同大小的alpha通道的均匀彩色图像:
colorImage = pygame.Surface(image.get_size()).convert_alpha()
colorImage.fill(color)
通过使用过滤器BLEND_RGBA_MULT
,将image
与maskImage
混合:
image.blit(colorImage, (0,0), special_flags = pygame.BLEND_RGBA_MULT)
精灵类可能看起来像这样:
class MySprite(pygame.sprite.Sprite):
def __init__(self, imageName, color):
super().__init__()
self.image = pygame.image.load(imageName)
self.rect = self.image.get_rect()
colorImage = pygame.Surface(self.image.get_size()).convert_alpha()
colorImage.fill(color)
self.image.blit(colorImage, (0,0), special_flags = pygame.BLEND_RGBA_MULT)