【发布时间】:2020-12-12 16:47:10
【问题描述】:
我正在尝试在游戏中添加一些雾,但我遇到了一个问题,即我意识到雾太厚/不透明度太高。我想用更低的不透明度对其进行 blit,但我不太确定如何以及我在网上找到的教程不起作用/已经希望您知道如何操作。
以防万一您想知道代码是如何编写的:
screen.blit(fog, (0, 0))
编辑:我使用的是 Python 3.8,以防万一
编辑编辑:我使用的是 Pygame 2.0.0,以防万一也很重要
【问题讨论】:
我正在尝试在游戏中添加一些雾,但我遇到了一个问题,即我意识到雾太厚/不透明度太高。我想用更低的不透明度对其进行 blit,但我不太确定如何以及我在网上找到的教程不起作用/已经希望您知道如何操作。
以防万一您想知道代码是如何编写的:
screen.blit(fog, (0, 0))
编辑:我使用的是 Python 3.8,以防万一
编辑编辑:我使用的是 Pygame 2.0.0,以防万一也很重要
【问题讨论】:
您不会在不透明度较低的情况下进行 blit,而是在不透明度较低的表面上进行 blit。
使用surface.set_alpha() 更改雾的不透明度,然后再对它进行blit。
文档:https://www.pygame.org/docs/ref/surface.html#pygame.Surface.set_alpha
另外,如果您从图像加载雾中,请务必在其上使用surface.convert_alpha(),否则它不会注册图像格式的透明度。
【讨论】:
blit() 实际上将 Surface 混合到目标 Surface 上,这取决于 Surface 的 Alpha 通道。您所要做的就是更改fog 的alpha 通道。使用set_alpha() 设置完整 Surface 图像的 alpha 值:
设置 Surface 的当前 alpha 值。当将此 Surface 粘贴到目标上时,像素将被绘制为略微透明。 alpha 值是 0 到 255 之间的整数,0 表示完全透明,255 表示完全不透明。
如果要应用 50% 透明雾:
fog.set_alpha(127)
screen.blit(fog, (0, 0))
【讨论】: