gpt4 book ai didi

python - 如何检查组中的 Sprite 是否与其组中的其他 Sprite 发生碰撞?

转载 作者:太空宇宙 更新时间:2023-11-03 14:59:05 24 4
gpt4 key购买 nike

是否可以检查 pygame 组中的 pygame Sprite 是否与其组内的其他 Sprite 发生碰撞?

这是迄今为止我的代码:

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

每个区 block 都有这个更新功能。

最佳答案

您可以迭代 Sprite 组,首先检查是否 self != block 并使用 Rect.colliderect 进行碰撞检测。

for block in blocks:
if self != block and self.rect.colliderect(block.rect):
# Do something for every collided block.

或者查看是否有任何 Sprite 与自身发生碰撞。

collided = any(self.rect.colliderect(block.rect)
for block in blocks if self != block)
<小时/>

如果需要,您还可以为 pygame.sprite.spritecollidespritecollideany 编写自定义 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)

然后在主循环中将 collided 回调函数传递给 spritecollideany:

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

关于python - 如何检查组中的 Sprite 是否与其组中的其他 Sprite 发生碰撞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45266570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com