透明的spritesheet有黑色背景

时间:2018-01-05 18:28:37

标签: python pygame

我正在使用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)

我已经尝试过一些东西,但没有任何效果。欢迎任何想法。

1 个答案:

答案 0 :(得分:2)

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

transColor = (255,255,255,0)

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

或只是传递pygame.SRCALPHA标志:

image = pygame.Surface(rect.size, pygame.SRCALPHA)

更好的解决方案是使用pygame.Surface.subsurface来剪切工作表:

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