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 に答える