我正在使用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)
我已经尝试过一些东西,但没有任何效果。欢迎任何想法。
答案 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)