【问题标题】:Libgdx multiple enemiesLibgdx 多个敌人
【发布时间】:2015-05-10 07:55:09
【问题描述】:

我正在创建一个玩家必须躲避敌人的游戏,现在它可以很好地对付一个敌人。但是我如何创建像一系列敌人一样不断产生它们?这是我要创建多个对象的类/对象:

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 arrays object libgdx


    【解决方案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 替换为任何必要的检查。

    【讨论】:

    • 当我尝试这个时它终止并且我得到退出值 1,在第 125 行 LwjglApplication 上显示错误。
    • @Dumbostyle 你能指定你得到什么错误吗?另外,也许发布新代码,包括产生错误的行。
    猜你喜欢
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2020-10-10
    相关资源
    最近更新 更多