是否可以检查pygame组中的pygame sprite是否与其组内的其他sprite发生碰撞?
到目前为止,这是我的代码:
def update(self, blocks):
if not pygame.sprite.spritecollideany(self, blocks):
self.rect.y += 1
此更新功能在每个块中。
答案 0 :(得分:1)
您可以遍历精灵组,先检查是否self != block
并使用Rect.colliderect
进行碰撞检测。
for block in blocks:
if self != block and self.rect.colliderect(block.rect):
# Do something for every collided block.
或者查看是否有任何精灵与self
发生碰撞。
collided = any(self.rect.colliderect(block.rect)
for block in blocks if self != block)
如果需要,您还可以为collided
或pygame.sprite.spritecollide
编写自定义spritecollideany
回调函数。
# Define this in the global scope or add it as a class method.
def collided(sprite, other):
return sprite != other and sprite.rect.colliderect(other.rect)
然后在您的主循环中将collided
回调函数传递给spritecollideany
:
if not pygame.sprite.spritecollideany(self, blocks, collided):