pygame spritecollide不适用于群组

时间:2018-07-12 16:36:31

标签: python pygame

因此,我正在制作一款涉及玩家与点击框碰撞的游戏,并且如果玩家与组中的任何点击框碰撞,该函数应该返回True。这适用于一个Hitbox,但如果我将组放入spritecollide函数中,它将返回错误“ Hitbox对象不可迭代”。如果有人可以帮忙,我已将该函数放在下面。(目标是Hitbox组)

def CheckCollision(Targets,Player):
for x in Targets:
    if pygame.sprite.spritecollide(Player,x,0) == True:
        return(True)
return(False)

1 个答案:

答案 0 :(得分:0)

查看spritecollide的{​​{3}}。

第一个参数应为Sprite;第二个参数应该是Group

错误消息告诉您出了什么问题:x不可迭代,因为它是Hitbox。因此,请停止使用spritecollide对象调用Hitbox并使用Targets(应为Group)调用它,而不是:

def CheckCollision(Targets, Player):
    return pygame.sprite.spritecollide(Player, Targets,0)

但是,如果您只想知道Player(应该为Sprite)是否与Targets中的任何内容(应该为Group)发生冲突,那么您可以简单地使用docs

def CheckCollision(Targets, Player):
    return pygame.sprite.spritecollideany(Player, Targets)

仅当要删除Sprite或需要与另一个spritecollide相交的所有Sprite的列表时,才应使用Sprite