Форум программистов, компьютерный форум CyberForum.ru

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

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

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

15.05.2016, 23:14. Просмотров 489. Ответов 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();
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.05.2016, 23:14     Столкновение в libgdx через overlaps
Посмотрите здесь:
Android Libgdx AI
Android Splash на libgdx
SQLite и libGDX Android
Android Libgdx polygon
Android Libgdx уроки посоветуйте
LibGDX загрузка аудио Android
Компиляция игры, libGDX Android
Android Нужен ли мне LibGDX?
LibGDX вращение текстуры Android
Android LibGDX. TexturePacker. Не пакует текстуры
Android LibGDX, не получается создать apk файл
Libgdx. Задержка перед выполнением действия Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
15.05.2016, 23:41     Столкновение в libgdx через overlaps #2
VolAndr, вложить один while в другой. Но тогда получится сложность O(m*n), и это не лучшим способом отразится на производительности, мне кажется
VolAndr
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 11
15.05.2016, 23:58  [ТС]     Столкновение в libgdx через overlaps #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();
                }
            }
 
 
        }
иногда срабатывает ,но всё тормозит сразу как-то. Если обратно то вообще не работает
EVP
321 / 243 / 43
Регистрация: 14.12.2010
Сообщений: 464
18.05.2016, 17:02     Столкновение в libgdx через overlaps #4
Цитата Сообщение от VolAndr Посмотреть сообщение
С одним объектом получается ,а когда каждый экземпляр с каждым ,то не знаю как это реализовать.
Посмотри книжку: Программирование игр под Android.
Там в главе 8 при определение столкновений рассказывается про широкую и узкую фазы определения столкновений (стр. 405).
Для уменьшения количества взаимных проверок пересечения весь игровой мир разбивается на маленькие области,
что даёт выигрыш по отсечению ненужных проверок.
Yandex
Объявления
18.05.2016, 17:02     Столкновение в libgdx через overlaps
Ответ Создать тему
Опции темы

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