Обнаружение столкновений космических захватчиков. 1 пуля проверить всех захватчиков?

Я разработал сетку захватчиков, в которых я могу выстрелить пулей.

Единственное известное мне решение для обнаружения столкновений — это использование двух методов Rectangles и Intersects.

Мне кажется, сравнивать каждую пулю с каждым захватчиком на экране неэффективно.

Есть ли другое решение, которое я могу использовать здесь, более разумное и сравнивающее только некоторых захватчиков.

Я предлагаю использовать флаг для оси X, который заполняется положением X пули при выстреле. Спрайты захватчика будут иметь доступ к этому флагу и будут запускать метод пересечения только в том случае, если спрайт захватчика находится в этой позиции X (+/- несколько пикселей). Это значительно уменьшит количество сравнений.

Любые идеи? Спасибо.


person jim    schedule 28.07.2012    source источник
comment
Мое чувство преждевременной оптимизации покалывает...   -  person Andrew Russell    schedule 28.07.2012
comment
@AndrewRussell, это точно :)   -  person jim    schedule 28.07.2012


Ответы (1)


arrow_upward
1
arrow_downward

Вы правы, есть кое-что, что вы можете сделать потенциально более эффективным. Разделив пространство на крупные секции и увидев, в какой секции находится пуля, вы сможете отсечь захватчиков в других секциях. Вы можете сделать еще один шаг и иметь несколько слоев «грубости» или разрешения.

В конце этой цепочки мыслей находится структура данных, называемая деревом квадрантов. Это естественный и эффективный способ обнаружения столкновений в двух измерениях.

person phs    schedule 28.07.2012
comment
Вот как это называлось. Друг объяснил это некоторое время назад, но не мог вспомнить название алгоритма для моей жизни. - person jim; 28.07.2012