java - Libgdx 多个敌人

标签 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);

感谢您的帮助! :)

最佳答案

我认为您正在寻找的是一个列表(具体来说,是一个 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。

关于java - Libgdx 多个敌人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149028/

相关文章:

java - 如何在 PHP 中创建 Java 类对象并运行其函数?

java - Activity : no processes deployed with key

jquery - 将html表中的所有数据获取到数组中

java - 返回数组的第一个结构体为空

javascript - jQuery inArray 与哈希表

python - __getattr__ 等效于方法

java - java.sql.PreparedStatement 的 Android 实现

java - 在 Java 中显示来自数据库的多个图像

java - 重定向到 Play 框架中同一 Controller 中的操作

Javascript 将数据按摩到新数组中