Самый простой способ - перебрать все основные враги и все обновления, чтобы увидеть, меньше ли расстояние между любой парой, чем вы считаете «близким».
Это можно улучшить, используя причудливые алгоритмы. Попробуйте выполнить поиск по ключевому слову spacial partitioning
, если вы чувствуете академичность.
Если вы разместите код в distance
, я был бы рад исправить его для вас. Не видя его, если вы уверены, что расчет расстояния правильно, проверьте, что координаты, используемые для противника и обновления находятся в одной и той же координате пространства
EDIT (т.е. обе мировые координаты.):
основе ваши комментарии, вы путаетесь о том, что означает статичность. Статическая переменная используется для каждого экземпляра класса. В этом случае у ваших врагов, конечно же, не будет статического режима getX()
. Каждый враг нуждается в своей позиции, они не имеют единственного положения.
Так что я предлагаю:
- Сделайте ваши обновления и вражеские классы имеют нестатические х и у переменных и нестатические получить/установить процедуры.
- Храните все ваши экземпляры врага в структуре данных, например списке.
- Храните все экземпляры обновления в структуре данных, например в списке.
Затем перечислить по обоим так:
for(int i=0;i<enemies.size();i++){
Enemy enemy = enemies.get(i);
for(int j=0;j<upgrades.size();j++){
Upgrade upgrade = upgrades.get(j);
if(main.distance(enemy.getX(),upgrade.getX(),enemy.getY(),upgrade.getY())<15){
//enemy is close to upgrade.
}
}
}
это кажется вам необходимость третий класс, ответственный за это. – nachokk