krembrule2016
@krembrule2016

Как обработать прикосновение к экрану в области расположения спрайта?

Привет!
Всех причастных с прошедшими праздниками!

Есть класс, при создании экземпляра которого появляется коллекция, которая содержит спрайты.
Все как обычно:
Объявляю переменную в классе

static ArrayList<Sprite> caterpillar;

Забиваю в конструкторе спрайтами вооот такой функцией:

private void building(){
        //тут будет забивать массив спрайтами
        for( int i = 0; i < numberOfElements; i ++){
            sprite = new Sprite(region);
            sprite.setX(positionX);
            sprite.setY(positionY);
            caterpillar.add(sprite);
            positionY -= 150;
        }
    }

При отрисовке все тип-топ, все как надо.

Есть метод, который эту коллекцию возвращает.

public static ArrayList<Sprite> getCaterpillar(){return caterpillar;}


В классе-контроллере пытаюсь реализовать суть вопроса:

public boolean touchDown(int screenX, int screenY, int pointer, int button) {
        for(Sprite i : ourCaterpillar){ if(i.getBoundingRectangle().contains(screenX, screenY)) System.out.println("Есть попадание!!"); }
        for(int i = 0 ; i < 8; i ++){
           if(ourCaterpillar.get(i).getBoundingRectangle().contains(screenX,screenY)){ System.out.println("Есть попадание"); }
        }
        System.out.println(ourCaterpillar.size());
        return true;
    }


иии... ничего не выходит.
Если это важно, то моя гусеница из спрайтов еще и двигается.
Что делать?
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
krembrule2016
@krembrule2016 Автор вопроса
Проблема обнаружилась в том, что несмотря на отрисовку спрайта бОльшим, чем он есть
batch.draw(i, i.getX(), i.getY(), 150, 150);
контейнс ищет среди точек, которые наполняют спрайт оригинального размера.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы