我正在尝试为我的游戏添加背景图像,我需要在某种不透明度下。我使用了表面的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()
有关如何执行此操作的任何提示?
答案 0 :(得分: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)