Wie kann man in Pygame ein Sprite mit geringerer Deckkraft blitzen / zeichnen? [Duplikat]
Ich versuche, etwas Nebel in ein Spiel zu verwandeln, aber ich bin auf ein Problem gestoßen, bei dem ich festgestellt habe, dass der Nebel zu dicht / zu undurchsichtig zu hoch ist. Ich möchte es mit einer noch geringeren Deckkraft blenden, bin mir aber nicht sicher, wie und die Tutorials, die ich online gefunden habe, funktionieren nicht / erwarten bereits, dass Sie wissen, wie es geht.
Nur für den Fall, dass Sie sich fragen, wie der Code geschrieben ist:
screen.blit(fog, (0, 0))
EDIT: Ich benutze Python 3.8, nur für den Fall, dass das wichtig ist
EDIT EDIT: Ich benutze Pygame 2.0.0, nur für den Fall, dass das auch wichtig ist
Antworten
Sie blenden nicht bei geringerer Deckkraft, sondern bei einer Oberfläche mit geringerer Deckkraft.
Verwenden surface.set_alpha()
Sie diese Option, um die Deckkraft des Nebels zu ändern, bevor Sie ihn aufblenden.
Docs: https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
Wenn Sie von einem Bild in Ihren Nebel laden, stellen Sie sicher, dass Sie surface.convert_alpha()
es verwenden, da sonst die Transparenz nicht im Bildformat registriert wird.
blit()tatsächlich verbindet eine Oberfläche auf die Zielfläche , abhängig von dem Alphakanal der Oberfläche . Alles was Sie tun müssen, ist den Alphakanal des zu ändern fog
. Verwenden Sie set_alpha()diese Option , um den Alpha-Wert für das vollständige Oberflächenbild festzulegen:
Stellen Sie den aktuellen Alpha-Wert für die Oberfläche ein. Wenn Sie diese Oberfläche auf ein Ziel verteilen, werden die Pixel leicht transparent gezeichnet. Der Alpha-Wert ist eine Ganzzahl von 0 bis 255, 0 ist vollständig transparent und 255 ist vollständig undurchsichtig.
Wenn Sie einen 50% transparenten Nebel auftragen möchten:
fog.set_alpha(127)
screen.blit(fog, (0, 0))