因此,我正在制作一款涉及玩家与点击框碰撞的游戏,并且如果玩家与组中的任何点击框碰撞,该函数应该返回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)
答案 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
。