不透明度の低いPygameでスプライトをどのようにブリット/描画しますか?[複製]

Dec 12 2020

霧をゲームにブリットしようとしていますが、霧が厚すぎて不透明すぎて高すぎないことに気付いたという問題が発生しました。さらに不透明度を下げてブリットしたいのですが、方法がよくわかりません。オンラインで見つけたチュートリアルが機能しないか、方法を知っていることをすでに期待しています。

コードがどのように書かれているのか疑問に思っている場合に備えて:

screen.blit(fog, (0, 0))

編集:問題が発生した場合に備えて、Python3.8を使用しています

編集編集:それも重要な場合に備えて、私はPygame2.0.0を使用しています

回答

1 Starbuck5 Dec 12 2020 at 06:17

不透明度を下げてブリットするのではなく、不透明度を下げたサーフェスをブリットします。

surface.set_alpha()霧をブリットする前に、霧の不透明度を変更するために使用します。

ドキュメント: https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha

また、画像からフォグを読み込む場合は、必ず使用surface.convert_alpha()してください。そうしないと、画像形式で透明度が登録されません。

Rabbid76 Dec 12 2020 at 15:45

blit()実際にブレンドサーフェスをターゲット上表面のアルファチャンネルに依存して、表面。あなたがしなければならないのは、のアルファチャンネルを変更することですfog。set_alpha()完全なサーフェスイメージのアルファ値を設定するために使用します。

Surfaceの現在のアルファ値を設定します。このサーフェスを宛先にブリットすると、ピクセルはわずかに透明に描画されます。アルファ値は0〜255の整数で、0は完全に透明で、255は完全に不透明です。

50%透明なフォグを適用する場合:

fog.set_alpha(127)
screen.blit(fog, (0, 0))