透明精灵片有黑色背景

2024-06-28 20:12:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python和Pygame开发一个游戏。我为其中一个敌人创建了一个精灵表,并使我的代码生效。问题是,尽管图像是透明图像,但它的背景似乎是黑色的。它的代码是:

    enemySheet = pygame.image.load("resources/Alien.png").convert_alpha()
    transColor = (255,255,255)
    cells = []
    for n in range(3):
        width, height=(36,32)
        rect = pygame.Rect(n * width, 0, width, height)
        image = pygame.Surface(rect.size).convert_alpha()
        image.blit(enemySheet, (0,0), rect)
        cells.append(image)

    enemyImg = cells[0]
    enemyImg.set_colorkey(transColor)
    enemy = enemyImg.get_rect()
    enemy.center = (216,216)

我已经试过几件事了,但没用。欢迎有任何想法。在


Tags: 代码rect图像imagealphaconvertwidthpygame
1条回答
网友
1楼 · 发布于 2024-06-28 20:12:55

默认情况下,新曲面将填充黑色。如果要使其透明,可以在transColor(alpha值)中添加第四个数字,然后填充image

transColor = (255,255,255,0)

    # In the for loop.
    image = pygame.Surface(rect.size).convert_alpha()
    image.fill(transColor)

或者只需传递pygame.SRCALPHA标志:

^{pr2}$

更好的解决方案是使用^{}剪切板材:

for n in range(3):
    width, height = (36, 32)
    rect = pygame.Rect(n * width, 0, width, height)
    image = enemySheet.subsurface(rect)
    cells.append(image)

相关问题 更多 >