在Pygame中可以改变精灵的颜色吗?

2024-06-11 05:26:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Pygame制作了一个Pygame游戏,在游戏开始前包括一个小的化身制作者,但是我没有创建一个有88种不同发型和颜色组合的大精灵床单,有没有一种方法可以让我在游戏中只使用每个发型的一个通用的.png图像并对其应用颜色?在

发型保存为.png图像,带有alpha和抗锯齿,因此它们不仅仅是一种颜色。我有8种不同的发型和11种不同的颜色。将它们作为精灵表载入游戏中,并将其夹在游戏中并不是一个问题,但是如果有一种方法可以在游戏中应用颜色(或色调),那么不仅会在内存上更容易,而且会为更多的可能性打开它。在

hairstyles


Tags: 方法内存图像alpha游戏png颜色可能性
1条回答
网友
1楼 · 发布于 2024-06-11 05:26:07

如果图像是“遮罩”图像,具有透明背景和白色(255、255、255)遮罩,则可以轻松地“着色”图像。在

加载图像:

image = pygame.image.load(imageName)

生成具有相同大小的alpha通道的统一颜色图像:

^{pr2}$

通过使用过滤器^{},将image与{}混合:

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)

相关问题 更多 >