如何在Pygame中以较低的不透明度闪电/绘制精灵



我正试图在游戏中加入一些雾,但我遇到了一个问题,我意识到雾太厚/不透明度太高。我想用更低的透明度来闪电战,但我不太确定如何,我在网上找到的教程不起作用/已经希望你知道如何。

万一你想知道代码是怎么写的:

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

编辑:我使用的是Python 3.8,以防万一

编辑编辑:我使用的是Pygame 2.0.0,以防万一也很重要

不以较低的不透明度进行blit,而是对具有较低不透明度的曲面进行blit。

使用surface.set_alpha()在闪电战之前更改雾的不透明度。

文档:https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha

此外,如果要从图像加载到雾中,请确保在其上使用surface.convert_alpha(),否则它将不会在图像格式中注册透明度。

blit()实际上将曲面混合到目标表面上,这取决于面的alpha通道。您所要做的就是更改fog的alpha通道。使用set_alpha()设置全表面图像的alpha值:

设置曲面的当前alpha值。将此曲面闪电传送到目标上时,像素将被绘制为略微透明。alpha值是从0到255的整数,0是完全透明的,255是完全不透明的。

如果您想应用50%透明雾:

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

最新更新