我在太空入侵者克隆上使用Python 2.7和pygame。我可以让我的坦克移动,发射子弹和外星船只被删除,因此碰撞检测工作正常。我创建了一个sprite组,我希望我可以将所有的船只作为一个使用这个组。 我也尝试过“unionall”,但这似乎与小组无关。 我可以像这样遍历所有船只:
shipXpos = []
for ship in shipList:
shipXpos.append(ship.rect.x)
然后,
shipXMax = max(shipXpos)
shipXMin = min(shipXpos)
通过这种方式我想找到船的边界(虽然我猜rect.right和rect.left会更好)与屏幕边缘相比,这样我就可以改变船的方向。
似乎我可以将所有的精灵视为最简单的方法。
我希望这很有道理并且很清楚。谢谢。
答案 0 :(得分:1)
在外星飞船的Sprite类中,写一个移动外星飞船的update
函数。您可以传递任何您可能需要的参数(例如左侧或右侧的当前方向)。然后,在主程序中使用pygame.sprite.Group.update()
一次更新所有Sprite。
根据您的预期行为,您可能不需要检查屏幕两侧是否有碰撞。我假设你想要一致地移动所有外星飞船,这意味着如果最外面的船撞到边缘,你希望所有的船都改变方向。即使最外面的船只被摧毁,原始的太空入侵者也会这样做,这意味着剩余的船只不会移动到外边缘,而是保持在预定的路径上。在这种情况下,每艘船在向左移动之前向右移动一定数量的像素,您只需要在update
函数中跟踪该循环。