问题
I have two sprites one of them is a tank sprite the other is a protection sprite. I want to draw the protection sprite on the tank sprite. The images of the sprites are as follows:
When I draw the protection sprite on the tank sprite, the result is the following:
Center of the protection sprite is empty (according to photoshop, I checked multiple times). I am using the following code for the protection sprite
self.image = pygame.transform.scale(
pygame.image.load(os.path.join(imgFolderExp, "Powerups", "protection-3.png")).convert(), (40, 48))
self.image.set_colorkey((0, 0, 0))
What should I do in order to draw only the lines of the protection sprite so that in the middle of the combined draw, the tank will be seen?
回答1:
PNGs have per pixel alpha. It is not necessary to set a color key. Simply blit
the protector on the tank. convert() changes the pixel format to a format without alpha per pixel and removes the transparency information. Use convert_alpha() instead:
filepath = os.path.join(imgFolderExp, "Powerups", "protection-3.png")
protector_surf = pygame.image.load(filepath).convert_alpha()
self.image = pygame.transform.scale(protector_surf, (40, 48))
来源:https://stackoverflow.com/questions/65751155/how-to-draw-sprite-on-a-sprite-so-that-both-of-them-will-be-seen-in-pygame