Libgdx多个敌人

时间:2015-05-10 07:55:09

标签: java arrays object libgdx

我正在创造一个玩家必须躲避敌人的游戏,现在这对一个敌人来说效果很好。但是,我如何创造像一群敌人不断产生它们?这是我想要创建多个对象的类/对象:

public class Spike extends MoveEntity 
{
    public Spike(float speed, float rotation, float width, float height,    Vector2 position) 
    {
        super(speed, rotation, width, height, position);
    }

    void move(float delta) 
    {

    }

    public void update() 
    {
        position.y -= 3;
    }

}

以下是我如何渲染它(只是一个敌人):

sb.draw(sp_bg5, s.getPosition().x, s.getPosition().y, s.getWidth() / 2, s.getHeight() / 2, s.getWidth(), s.getHeight(), 1, 1, 0);

感谢您的帮助! :)

1 个答案:

答案 0 :(得分:1)

我认为你要找的是一个列表(特别是java.util.LinkedList)。你可以创建一个这样的:

LinkedList<Spike> enemies = new LinkedList<Spike>();

并像这样添加敌人:

enemies.add(new Spike(speed, rotation, width, height, position);

最后像这样画出来:

for (Spike s : enemies) {
    sb.draw(sp_bg5, s.getPosition().x, s.getPosition().y, s.getWidth() / 2, s.getHeight() / 2, s.getWidth(), s.getHeight(), 1, 1, 0);
}

但是,如果你想要去除它们,它会变得更复杂。在迭代它时,Java不允许您正常修改列表。您将不得不使用一个特殊的迭代器:

ListIterator<Spike> it = enemies.listIterator();
while (it.hasNext()) {
    Spike s = it.next();
    if (s.shouldBeRemoved()) {
        it.remove();
    }
}

你当然可以用必要的检查代替shouldBeRemoved。