Поиск ячеек между двумя точками (вдоль линии) для поиска препятствий

Моя игра в 3D-среде, разбитой на двумерные сетки в 2-мерном массиве

Поэтому я могу получить любую ячейку /узел, передав строки и столбцы типа return _nodes[r][c].

Когда атакующий атакует врага оружием дальнего боя, я хочу проверить, нет ли между двумя точками препятствия.

Без использования методов столкновения сетки я хочу достичь этого, проверив все ячейки, которые находятся между исходным и целевым точками, и проверьте, есть ли какие-либо препятствия.

Я хочу написать это в подпрограмме, которая вернет false, как только она найдет препятствие, и вернет true, если не найдет препятствия в любой из ячеек между исходным и целевым

введите описание изображения здесь>> </p>

<p> Из приведенного выше рисунка я хочу получить желтый цвет, который падает между двумя конечными точками </p>

<p> Может ли кто-нибудь предложить мне подход? </p></body></html>

5 голосов | спросил Noob Game Developer 16 Jpm1000000pmWed, 16 Jan 2013 16:29:19 +040013 2013, 16:29:19

1 ответ


5

Один из популярных способов сделать это, как говорит Дорнокноб в своем комментарии, - линия Брешенема алгоритм . Пример изображения, который выглядит почти идентично вашему примеру:

введите описание изображения здесь

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

По существу, вы начинаете работу с места пожара и проходите через линию, сгенерированную путем подключения местоположения пожара и местоположения удара. Для каждого квадрата, в который входит линия, вы проверяете наличие препятствий.

На странице wikipedia, приведенной выше, есть примеры псевдокодов, и вам должно быть просто найти примеры на выбранном вами языке.

Вы также должны проверить этот аналогичный вопрос ,

ответил MichaelHouse 16 Jpm1000000pmWed, 16 Jan 2013 19:45:24 +040013 2013, 19:45:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132