Столкновение первого элемента Java ArrayList не работает, но без него работает - PullRequest
0 голосов
/ 21 января 2019

Я создаю ArrayList элементов Rectangles:

private ArrayList<Rectangle> items = new ArrayList<>();

Я использую ArrayList в моем update методе.

@Override
public void update(float delta) {

    items.add(new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
                GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5));

        if (Intersector.overlaps(GameWorld.wizard.getBoundingRectangle(), items.get(0))) {                
            Gdx.app.exit();             
        }    
}

Столкновение с элементом не работает , потому что программа не закрывается, когда нажимает на элемент.

Но когда я делаю это так, она прекрасно работает:

private Rectangle doublepoints;

doublepoints = new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
                GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5);

@Override
public void update(float delta) {

        if (Intersector.overlaps(GameWorld.wizard.getBoundingRectangle(), doublepoints)) {                
            Gdx.app.exit();             
        }    
}

IЯ не понимаю, почему последний работает, но я бы очень хотел сделать это с ArrayList.Может кто-нибудь сказать мне, почему?

Точка останова (ArrayList):

enter image description here

Точка останова (нормальная):

enter image description here

1 Ответ

0 голосов
/ 24 января 2019

Не уверен насчет остальной части вашего кода, но не будет ли нижеприведенный код добавлять прямоугольник в каждом обновлении рендера?(60 секунд)

public void update(float delta) {

items.add(new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
            GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5));}

Возможно, проблема связана с этой проблемой.

Используйте:

System.out.println(items.size());

для проверки.

...