如何用pygame draw()在组中仅绘制特定的精灵?
<Group(4 sprites)>
我有4个精灵在一个组里,它们都准备好用线条绘制了。
stuff_to_draw.draw(screen)
它们现在是同时绘制的。
有没有可能做到像这样呢?
stuff_to_draw[0].draw(screen)
我查看了pygame组的文档,但找不到关于如何选择组中特定元素的有用信息。
我想实现什么呢?
这个精灵组里有一个答案精灵,它包含一个位置(x,y)和一个要绘制的字母图像。
目前在所有地图上,答案都是绘制的,而不是在当前的问题上。所以我想能够在问题一时绘制stuff_to_draw[0]
,然后在问题二时绘制stuff_to_draw[1]
。
2 个回答
2
你可以单独绘制任何一个精灵,但我不太建议这样做。这样做的方式是:
sprite = stuff_to_draw.sprites()[0]
screen.blit(sprite.image, sprite.rect)
我建议把你想要在某个时刻绘制的精灵放在一个精灵组里,把其他的放在一个单独的列表或组里。
4
首先,给你每个精灵(sprite)添加一个 self.type
属性。给它一个值,比如 self.type = 1
。然后在你想绘制某个精灵或一组精灵的时候调用这个属性:
for sprite in group: #Replace group with your sprite group
if sprite.type == 1: #Or whatever type you want
sprite.draw(screen)
elif sprite.type == 2:
sprite.draw(screen)
#Etc...
接下来,在你的 sprite
类中,确保你是从 pygame.sprite.Sprite
这个类继承的:
class my_sprite_class(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__()
#Etc...
#Add this draw function so we can draw individual sprites
def draw(self, screen):
screen.blit(self.image, self.rect)
我忘了单个精灵是没有绘制功能的,只有组才有。@pmoleri @jackdh 我错了
请查看这个 帖子,了解一下这个类能做些什么。
如果你还有其他问题,欢迎在下面评论。