【问题标题】:Transparent spritesheet has black background透明 spritesheet 具有黑色背景
【发布时间】:2018-01-05 18:28:36
【问题描述】:

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

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

【问题讨论】:

    标签: python pygame


    【解决方案1】:

    默认情况下,新表面用黑色填充。如果你想让它透明,你可以在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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 2015-07-04
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多