透明矩形在PyGame Zero



我使用screen.draw.rect()与PyGame Zero绘制矩形。它们将被用作游戏中的碰撞地图。但我不知道如何让它们透明。我能找到的唯一文档是标准PyGame库,它略有不同,但足以让它无法工作。

import pgzrun
TILE_SIZE = 64
TILES_WIDE = 8
TILES_HIGH = 8
WIDTH = TILE_SIZE * TILES_WIDE
HEIGHT = TILE_SIZE * TILES_HIGH
tiles = ["empty", "wall", "water"]
mapSheet = [
[0, 1, 1, 1, 1, 1, 1, 0],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 1, 1, 1, 1, 1, 0]
]
def draw():
screen.clear()
for rows in range(TILES_HIGH):
for cols in range(TILES_WIDE):
x = cols * TILE_SIZE
y = rows * TILE_SIZE
if mapSheet[rows][cols] == 1:
mybox = Rect((x, y), (TILE_SIZE, TILE_SIZE))
screen.draw.rect(mybox, (255, 255, 255))

# Start
pgzrun.go()

按照上面Rabbid76提供的链接,我修改了代码并将其包含在下面。这将创建一个50%透明的矩形。

import pgzrun
import pygame
TILE_SIZE = 64
TILES_WIDE = 8
TILES_HIGH = 8
WIDTH = TILE_SIZE * TILES_WIDE
HEIGHT = TILE_SIZE * TILES_HIGH
tiles = ["empty", "wall", "water"]
mapSheet = [
[0, 1, 1, 1, 1, 1, 1, 0],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 1, 0, 1],
[1, 0, 0, 1, 1, 0, 0, 1],
[1, 0, 0, 0, 0, 0, 0, 1],
[0, 1, 1, 1, 1, 1, 1, 0]
]
def draw():
screen.clear()
alphaSurface = pygame.Surface((TILE_SIZE, TILE_SIZE))
for rows in range(TILES_HIGH):
for cols in range(TILES_WIDE):
x = cols * TILE_SIZE
y = rows * TILE_SIZE
if mapSheet[rows][cols] == 1:
alphaSurface.set_alpha(128) # Set transparency
alphaSurface.fill((255, 255, 255))
screen.blit(alphaSurface, (x,y))

# Start
pgzrun.go()

最新更新