Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查组中的精灵是否与其组中的其他精灵发生碰撞?_Python_Pygame - Fatal编程技术网

Python 如何检查组中的精灵是否与其组中的其他精灵发生碰撞?

Python 如何检查组中的精灵是否与其组中的其他精灵发生碰撞?,python,pygame,Python,Pygame,是否可以检查pygame组中的pygame精灵是否与其组中的其他精灵发生碰撞 以下是我目前的代码: def update(self, blocks): if not pygame.sprite.spritecollideany(self, blocks): self.rect.y += 1 此更新函数位于每个块中。您可以迭代精灵组,检查是否self!=首先阻塞,然后使用Rect.collide Rect进行碰撞检测 for block in blocks: if

是否可以检查pygame组中的pygame精灵是否与其组中的其他精灵发生碰撞

以下是我目前的代码:

def update(self, blocks):
    if not pygame.sprite.spritecollideany(self, blocks):
        self.rect.y += 1

此更新函数位于每个块中。

您可以迭代精灵组,检查是否
self!=首先阻塞
,然后使用
Rect.collide Rect
进行碰撞检测

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)

您还可以为
pygame.sprite.spritecollide
spritecollideany
编写自定义的
collided
回调函数

# 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)
然后在主循环中,将
collized
回调函数传递给
spritecollizeany

if not pygame.sprite.spritecollideany(self, blocks, collided):