繁体   English   中英

如何验证同一个 pygame.sprite.Group() 中的两个精灵之间的碰撞?

[英]How to verify collision between two sprites in the same pygame.sprite.Group()?

我一直在尝试为我的自上而下的 pygame 2d 游戏创建一个敌人移动系统。 但我的两个敌人总是以互相超越而告终。 这就是为什么我决定创建一种方法来阻止敌人相互重叠,但我不知道如何检查组中的敌人与组中的 rest 之间的碰撞,因为当我这样做时,敌人一直以为他撞到了另一个敌人,但他只是撞到了自己。 有没有简单的方法来解决这个问题? 有关更多说明,请参阅下面代码中的注释

enemies = self.enemies.sprites()
for enemy in enemies:
    if pygame.sprite.spritecollide(enemy,self.enemies,False,pygame.sprite.collide_mask): # This is the part I would like to change because the enemy is always saying it is colliding with himself but I want him to see if he is in collision with the other enemies not himself even though he is part of that group
        print('collision')

您的一种选择是 2 个嵌套循环::

enemies = self.enemies.sprites()
for i, enemy1 in enumerate(enemies):
    for enemy2 in enemies[i+1:]:
        if pygame.sprite.collide_mask(enemy1, enemy2):
            print('collision')

外循环遍历所有敌人。 内部循环从第i+1个敌人迭代到最后。 这意味着每 2 个敌人之间的碰撞只测试一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM