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

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

Войти
Регистрация
Восстановить пароль
 
VolAndr
0 / 0 / 0
Регистрация: 24.05.2015
Сообщений: 11
15.05.2016, 23:14     Столкновение в libgdx через overlaps #1
Есть два списка 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
Посмотрите здесь:

LibGDX загрузка аудио Android
SQLite и libGDX Android
Android Libgdx AI
Android Splash на libgdx
Android Libgdx polygon
Libgdx или android studio для создания текстового симулятора Android
Libgdx. Задержка перед выполнением действия Android
Android LibGDX. TexturePacker. Не пакует текстуры
Android LibGDX, не получается создать apk файл
Компиляция игры, libGDX Android
Android Libgdx уроки посоветуйте
LibGDX вращение текстуры Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 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
319 / 241 / 43
Регистрация: 14.12.2010
Сообщений: 461
18.05.2016, 17:02     Столкновение в libgdx через overlaps #4
Цитата Сообщение от VolAndr Посмотреть сообщение
С одним объектом получается ,а когда каждый экземпляр с каждым ,то не знаю как это реализовать.
Посмотри книжку: Программирование игр под Android.
Там в главе 8 при определение столкновений рассказывается про широкую и узкую фазы определения столкновений (стр. 405).
Для уменьшения количества взаимных проверок пересечения весь игровой мир разбивается на маленькие области,
что даёт выигрыш по отсечению ненужных проверок.
Yandex
Объявления
18.05.2016, 17:02     Столкновение в libgdx через overlaps
Ответ Создать тему

Метки
libgdx, пересечение
Опции темы

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