0

我正在尝试为我的游戏添加背景图像,并且我需要它具有一定的不透明度。我使用了set_alpha()表面的方法来控制它的半透明度。但是,这会产生淡入效果,初始背景在设置的不透明度下最终会变为全亮度。有什么办法可以将背景的半透明度设置为恒定值?

我的代码是

self.bg = pygame.image.load("../game_images/background.png")
self.bg_size = self.bg.get_size()
self.bg_rect = self.bg.get_rect()
self.bg.set_alpha(5)
self.screen = pygame.display.set_mode(self.bg_size,pygame.FULLSCREEN)
self.screen.blit(self.bg, self.bg_rect)
pygame.display.update()

关于如何做到这一点的任何提示?

4

1 回答 1

0

这将有助于查看游戏循环。

您的图像可能会变亮,因为您在重绘之前没有清除屏幕。

screen.fill((0,0,0))
screen.blit(self.bg, self.bg_rect)
pygame.display.update()

如果你决定做一个self.bg.convert_alpha()。然后你需要使用pygame.surfarray.pixels_alpha()这需要安装 numpy。

# value is a float .01 to .99
def set_alpha(image, value):
    array = pygame.surfarray.pixels_alpha(image)
    for x in xrange(array.shape[0]):
        for y in xrange(array.shape[1]):
            array[x][y] = int(array[x][y] * value)
于 2014-08-30T14:40:15.167 回答