Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 PyGame:同一列表中的两个精灵碰撞_Python_Python 2.7_Python 3.x_Pygame - Fatal编程技术网

Python PyGame:同一列表中的两个精灵碰撞

Python PyGame:同一列表中的两个精灵碰撞,python,python-2.7,python-3.x,pygame,Python,Python 2.7,Python 3.x,Pygame,在我制作的游戏中,我试图让同一列表中的敌人不相互碰撞。我尝试使用的代码如下: for m in self.meteors: if pygame.sprite.collide_rect(m, m): self.velX = 0 else: self.velY = 0 我不知道为什么这样不行。它询问两颗流星是否发生碰撞,并以X速度或Y速度停在那里。感谢您的帮助。您不应该使用双环路吗 for index1, meteor1 in enumerate(s

在我制作的游戏中,我试图让同一列表中的敌人不相互碰撞。我尝试使用的代码如下:

for m in self.meteors:
    if pygame.sprite.collide_rect(m, m):
        self.velX = 0
    else:
        self.velY = 0

我不知道为什么这样不行。它询问两颗流星是否发生碰撞,并以X速度或Y速度停在那里。感谢您的帮助。

您不应该使用双环路吗

for index1, meteor1 in enumerate(self.meteors):
    for index2, meteor2 in enumerate(self.meteors):
        if index1 != index2:
            if pygame.sprite.collide_rect(meteor1, meteor2):
                self.velX = 0
            else:
                self.velY = 0

是否确实要将
m
传递给碰撞功能两次?它们中的一个是否应该是self?它所做的是检查同一颗流星是否占据同一空间,如果是,它将其velX设置为0。由于同一个对象将与其自身发生碰撞,因此这将永远无法到达目标。你能详细说明你想做什么吗?我试图阻止流星相互碰撞,但继续朝着另一个方向移动,所以如果它与流星的顶部/底部碰撞,它只会朝相反的方向移动,或者以X速度移动。如果我这样做,我会得到一个关于rect的错误,所以我认为它一定是(m,m)谢谢你的回答,我会看看它是否解决了我的问题。再次感谢,但我只是读了上面的内容。我使用的流星不止一颗。那么,我不是必须对每一颗流星都这样做吗?第一个循环遍历你的流星,第二个循环再次遍历它们,检查以确保你没有检查同一颗流星的自身,然后检查碰撞。剩下的是你的密码。好的,谢谢你帮我清理。我现在试试看。