С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
VolAndr
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 11
#1

Столкновение в libgdx через overlaps - Программирование Android

15.05.2016, 23:14. Просмотров 628. Ответов 3

Есть два списка Rectangle экземпляров. Мне нужно проверить пересечение через if (bullet.overlaps(enemyK) и удалить их оба. С одним объектом получается ,а когда каждый экземпляр с каждым ,то не знаю как это реализовать.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        Iterator<Rectangle> iterBullet = bullets.iterator();
        Iterator<Rectangle> iterEnemyK = enemiesK.iterator();
 
 
        
        while(iterBullet.hasNext()) {
            Rectangle bullet= iterBullet.next();
            bullet.y += 200 * Gdx.graphics.getDeltaTime();
            if(bullet.y > 480) iterBullet.remove();
 
        }
 
        while(iterEnemyK.hasNext()) {
            Rectangle enemyK= iterEnemyK.next();
            enemyK.y -= 200 * Gdx.graphics.getDeltaTime();
            if(enemyK.y < 0) iterBullet.remove();
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2016, 23:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Столкновение в libgdx через overlaps (Программирование Android):

Libgdx AI - Программирование Android
Добрый день , кто нибудь пользовался данной вещью? https://github.com/libgdx/gdx-ai/wiki Просто кроме этой страницы нигде информации...

SQLite и libGDX - Программирование Android
Здраствуйте! Программирую потихоньку игры на либе, так чисто для себя. Тут пришла в голову идея сделать классную игру, расписал все на...

Libgdx polygon - Программирование Android
Добрый день, возникла следующая проблема : создаю объект класса Polygon (com.badlogic.gdx.math.Polygon) , поворачиваю его, рисую: poly...

Splash на libgdx - Программирование Android
Всем привет есть 2 атласа 2048x2048 на андроиде 4.2 и выше, работает все отлично, все что ниже версией ошибка, причем инициализации....

Нужен ли мне LibGDX? - Программирование Android
Уважаемые программисты, подскажите, пожалуйста, мне ответ на следующий вопрос: - Я хочу написать очень простую игру (для себя... с целью...

LibGDX вращение текстуры - Программирование Android
Здравствуйте, есть ли в llibGDX какой-нибудь способ повернуть текстуру кроме обычного draw, он не устраивает, потому что поворот текстуры...

3
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
15.05.2016, 23:41 #2
VolAndr, вложить один while в другой. Но тогда получится сложность O(m*n), и это не лучшим способом отразится на производительности, мне кажется
0
VolAndr
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 11
15.05.2016, 23:58  [ТС] #3
YuraAAA, а по другому не как?
при
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        while(iterBullet.hasNext()) {
            Rectangle bullet= iterBullet.next();
            bullet.y += 200 * Gdx.graphics.getDeltaTime();
            if(bullet.y > 480) iterBullet.remove();
            while(iterEnemyK.hasNext()) {
                Rectangle enemyK= iterEnemyK.next();
                enemyK.y -= 200 * Gdx.graphics.getDeltaTime();
                if(enemyK.y < 0) iterEnemyK.remove();
                if (enemyK.overlaps(player)) {
                    iterEnemyK.remove();
 
                }
                if (enemyK.overlaps(bullet)) {
                    iterBullet.remove();
                }
            }
 
 
        }
иногда срабатывает ,но всё тормозит сразу как-то. Если обратно то вообще не работает
0
EVP
390 / 246 / 43
Регистрация: 14.12.2010
Сообщений: 472
18.05.2016, 17:02 #4
Цитата Сообщение от VolAndr Посмотреть сообщение
С одним объектом получается ,а когда каждый экземпляр с каждым ,то не знаю как это реализовать.
Посмотри книжку: Программирование игр под Android.
Там в главе 8 при определение столкновений рассказывается про широкую и узкую фазы определения столкновений (стр. 405).
Для уменьшения количества взаимных проверок пересечения весь игровой мир разбивается на маленькие области,
что даёт выигрыш по отсечению ненужных проверок.
0
18.05.2016, 17:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 17:02
Привет! Вот еще темы с ответами:

Компиляция игры, libGDX - Программирование Android
Здравствуйте. Помогите скомпилировать проект. Да, странная просьба) Я так понял, компилировать нужно в Andriod Studio. Игра написана с...

LibGDX загрузка аудио - Программирование Android
Ни как не получается загрузить музыку. В папку assets помещаю drop.wav rain.mp3 в методе create делаю так Sound dropSound; Music...

Libgdx уроки посоветуйте - Программирование Android
Привет! Посоветуйте уроки по LibGDX плиз. В гугле на первом месте сайт - http://suvitruf.ru/libgdx/ Он норм? Может что то еще можно...

LibGDX. TexturePacker. Не пакует текстуры - Программирование Android
Sync Project with Gradle Files нажимал. Помогите починить, пожалуйста. Для наглядности: package...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.