如何在pygame中引用和操作精灵组中的单个实体?

问题描述 投票:0回答:2

我有几个组来对我的变量进行排序(即 -

enemy_group = pygame.sprite.Group()
)。然而,我不知道如何“捕获”单个敌人并移动它(并且,理想情况下,攻击玩家)。有人可以帮我做这个吗?

class Enemy(pygame.sprite.Sprite):
    def __init__(self, x, y):
        pygame.sprite.Sprite.__init__(self)
        # insert pygame.Surface variables
    
    def update(self):
        # move entity accordingly (which is what I'm trying to do)

# game loop
enemy_group = pygame.sprite.Group()
enemy_group.update()
enemy_group.draw(screen)
python python-2.7 pygame
2个回答
0
投票

你有两种可能性。

pygame.sprite.Group
是可迭代的。因此,您可以遍历
for
循环中的元素:

for enemy in enemy_group:
    # [...]

或者,您可以使用

sprites()
方法:

返回该组包含的所有精灵的列表。

获取Sprites列表并通过订阅访问它们:

emeny_list = enemy_group.sprites()
enemy_1 = emeny_list[0]

0
投票

像Rabbid76的答案一样,您可以使用一个变量来保存精灵组中的精灵,然后像使用列表一样获取精灵并更改其位置或类似的东西。

列表=敌人_组.sprites()

list[0].rect.x = 100
list[0].rect.y = 200

我最近在 python 中制作 2048 时也遇到了同样的问题,这种方法最适合当你没有为每个精灵提供单独的变量时,就像在你的程序中``

© www.soinside.com 2019 - 2024. All rights reserved.