【问题标题】:How do you blit/draw a sprite in Pygame with lower opacity? [duplicate]你如何在 Pygame 中以较低的不透明度对精灵进行 blit/绘制? [复制]
【发布时间】:2020-12-12 16:47:10
【问题描述】:

我正在尝试在游戏中添加一些雾,但我遇到了一个问题,即我意识到雾太厚/不透明度太高。我想用更低的不透明度对其进行 blit,但我不太确定如何以及我在网上找到的教程不起作用/已经希望您知道如何操作。

以防万一您想知道代码是如何编写的:

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

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

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

【问题讨论】:

    标签: python pygame opacity


    【解决方案1】:

    您不会在不透明度较低的情况下进行 blit,而是在不透明度较低的表面上进行 blit。

    使用surface.set_alpha() 更改雾的不透明度,然后再对它进行blit。

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

    另外,如果您从图像加载雾中,请务必在其上使用surface.convert_alpha(),否则它不会注册图像格式的透明度。

    【讨论】:

      【解决方案2】:

      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))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-09
        • 2022-08-13
        相关资源
        最近更新 更多