我正在使用 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)
我已经尝试了一些方法,但没有任何效果。欢迎任何想法。
默认情况下,新表面填充为黑色。如果你想让它透明,你可以添加第四个数字到transColor
(alpha值)然后填充image
,
transColor = (255,255,255,0)
# In the for loop.
image = pygame.Surface(rect.size).convert_alpha()
image.fill(transColor)
或者只是通过pygame.SRCALPHA
flag:
image = pygame.Surface(rect.size, pygame.SRCALPHA)
更好的解决方案是使用pygame.Surface.subsurface http://www.pygame.org/docs/ref/surface.html#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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)