将一组精灵移动为一个

时间:2016-06-29 21:49:55

标签: pygame sprite game-physics

我在太空入侵者克隆上使用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会更好)与屏幕边缘相比,这样我就可以改变船的方向。

似乎我可以将所有的精灵视为最简单的方法。

我希望这很有道理并且很清楚。谢谢。

1 个答案:

答案 0 :(得分:1)

在外星飞船的Sprite类中,写一个移动外星飞船的update函数。您可以传递任何您可能需要的参数(例如左侧或右侧的当前方向)。然后,在主程序中使用pygame.sprite.Group.update()一次更新所有Sprite。

根据您的预期行为,您可能不需要检查屏幕两侧是否有碰撞。我假设你想要一致地移动所有外星飞船,这意味着如果最外面的船撞到边缘,你希望所有的船都改变方向。即使最外面的船只被摧毁,原始的太空入侵者也会这样做,这意味着剩余的船只不会移动到外边缘,而是保持在预定的路径上。在这种情况下,每艘船在向左移动之前向右移动一定数量的像素,您只需要在update函数中跟踪该循环。