【发布时间】:2014-01-20 19:35:33
【问题描述】:
在我正在制作的游戏中,我试图让同一列表中的敌人不会相互碰撞。我用来尝试让它工作的代码在这里:
for m in self.meteors:
if pygame.sprite.collide_rect(m, m):
self.velX = 0
else:
self.velY = 0
我不知道为什么这不起作用。它询问两颗流星是否发生碰撞并停在那里 X 速度或 Y 速度。任何帮助将不胜感激。
【问题讨论】:
-
您确定要将
m传递给碰撞函数两次吗?其中一个应该是self吗? -
它在做什么,检查同一个流星是否占据了同一个空间,如果是,它把它的 velX 设置为 0。这永远不会达到 velY,因为同一个物体会与自己发生碰撞。你能详细说明你想做什么吗?
-
我试图阻止流星相互碰撞,但继续朝另一个方向移动,所以如果它与流星的顶部/底部相撞,它只会向相反的方向移动或继续移动X 速度。
-
如果我做 self 我会收到关于 rect 的错误,所以我认为它必须是 (m, m)
标签: python python-2.7 python-3.x pygame