我的精灵有问题。
我创建了一个精灵类:
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)
但我遇到的问题是,精灵碰撞只能检测到放置在地图上的第一个精灵。当我放置第二个时,只有第二个可以进行碰撞检测。第一个仍然在地图上,但看起来它不再是精灵了。
谢谢:)
我猜你在某个地方用该类的实例覆盖了你的类
lumbercheck
,因为如果lumbercheck.PlaceOnMap(pos)
仍然是一个类并且lumbercheck
是一个实例方法,那么PlaceOnMap
不应该工作。
使用点工具绘制火球精灵!如有必要,使用精灵菜单中的大小字段缩小精灵