如何对2个精灵组执行碰撞检查



所以,我在这里有一些代码,但它似乎不起作用。我正在努力做到这一点,如果我的敌人摔倒在瓷砖上,它会被送回瓷砖顶部,这样它就不会穿过地板——碰撞检查确实有效,但我不知道如何在self.enemy组和self.tiles组中循环,看看他们中是否有人碰撞在一起,碰撞的敌人会被送回敌人。direction.y只是检查敌人是否正在下降

enemytilecollision=pygame.sprite.groupcollide(self.tiles,self.enemy,False,False)
if enemytilecollision:
for enemy in self.enemy.sprites():
if enemy.direction.y>0:
for tile in self.tiles.sprites():
enemy.rect.bottom=tile.rect.top
enemy.direction.y=0

pygame.sprite.groupcollide返回您所需要的全部内容。它返回一个字典,其中包含所有与敌人碰撞的瓦片。字典中每个项目的值都是瓷砖碰撞的敌人列表:

enemytilecollision = pygame.sprite.groupcollide(self.tiles,self.enemy,False,False)
for tile, collidingEnemies in enemytilecollision.items():
for enemy in collidingEnemies:
# tile collides with enemy 
print(tile.rect, enemy.rect)

最新更新