Pygame 精灵 - 创建新精灵后不活动

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

我的精灵有问题。

我创建了一个精灵类:

class lumbercheck(pygame.sprite.Sprite):
    def __init__(self):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load("holzfaeller.png")
        self.rect = self.image.get_rect()

    def PlaceOnMap(self, pos):
        self.rect.center = pos

将精灵添加到组中:

lumbercheck_g = pygame.sprite.RenderPlain(lumbercheck)
allbuildings = pygame.sprite.RenderPlain((lumbercheck, ...))

现在我开始游戏循环并要求精灵碰撞:

if any(sprite.rect.collidepoint(pos) for sprite in allbuildings.sprites())

然后我将精灵放在地图上,我单击了:

elif event.type == pygame.MOUSEBUTTONDOWN and holzfaeller is True and tilemap_1[pos_y][pos_x] == 3:
    lumbercheck.PlaceOnMap(pos)
    lumbercheck_g.draw(gameDisplay)

但我遇到的问题是,精灵碰撞只能检测到放置在地图上的第一个精灵。当我放置第二个时,只有第二个可以进行碰撞检测。第一个仍然在地图上,但看起来它不再是精灵了。

谢谢:)

python pygame sprite collision-detection
2个回答
1
投票

我猜你在某个地方用该类的实例覆盖了你的类

lumbercheck
,因为如果
lumbercheck.PlaceOnMap(pos)
仍然是一个类并且
lumbercheck
是一个实例方法,那么
PlaceOnMap
不应该工作。


0
投票

使用点工具绘制火球精灵!如有必要,使用精灵菜单中的大小字段缩小精灵

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