Добавлен
Как определить, может ли пройти юнит в определённую точку на карте или к другому юниту?

Принятый ответ

если просто - то даммик, который будет бежать от начала до конца со скоростью 522, но время прибытия вообще неизвестно, так что это долгий процесс + даммику нужна полноценная модель столкновений
остальное - делается либо никак, либо не из джасса. проверять даже карту 64х64 в худшем случае на проходимость по квадратам? игра просто зависнет

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
12
7 лет назад
1
Есть функция на ГУИ для определения проходимости точки
0
18
7 лет назад
Отредактирован Maniac_91
0
Astra, не думаю, что это поможет. Да, можно рассчитать все точки. но это долго. А если по прямой не получится - то искать обходные пути, что займёт ещё кучу времени и тонны расчётов.
Мой вариант - сверхскоростной невидимый дамми-юнит, который пробегает весь необходимый путь и по таймеру выдаёт свои координаты (добежал или нет).
Где-то на сайте была наработка на увеличение максимальной скорости.
Вроде бы, здесь.
2
16
7 лет назад
Отредактирован Raised
2
если просто - то даммик, который будет бежать от начала до конца со скоростью 522, но время прибытия вообще неизвестно, так что это долгий процесс + даммику нужна полноценная модель столкновений
остальное - делается либо никак, либо не из джасса. проверять даже карту 64х64 в худшем случае на проходимость по квадратам? игра просто зависнет
Принятый ответ
0
9
7 лет назад
Отредактирован Vampir_kolik
0
Есть у меня одна идейка, как можно реализовать поиск путей между двумя точками. Нужно создать 4 переменных стоковых (String). Занести в первую переменную уже заранее подготовленную и записанную в текстовом виде карту путей. Карта путей будет иметь разрешение 128*128 (большие клетки на карте)*4(маленькие клетки в одной большой клетке) = 65 536 маленьких клеток на карте путей. 1 маленькая клетка 1 символ в стоке. Символ "1" или "0". Можно пройти в этой клетке или нет. 1 - можно, 0 - нет. 1 стока будет отвечать за рельеф на игровой карте. 2 стока будет отвечать за разрушаемые объекты деревья на игровой карте. 3 стока будет отвечать за расположения любых юнитов на игровой карте. 4 стока необходима для расчёта оптимального пути между клетками. С начало в 4 стоку заносятся все данные из первых 3 сток. А потом уже идёт аналитический процесс для определения оптимального пути между клетками на карте путей, по тем или иным условиями. Например наш юнит занимает на карте путей 2*2 маленькие клетки. И нужно будет определить оптимальный путь на карте путей именно для этого юнита, у которого такой размер на карте путей. Это мы будем делать следующим образом. Проверять сразу 2 соседнии клетки с любой стороны, а именно сверху, снизу, слева и справа. И условие будет такое, если хоть одна маленькая клетка свободная, то меняем числовое значение удаленности от первой точки на карте в переменной, а если 2 клетки заняты, то не меняем никакие числовые значения в переменной. А если мы не доберемся до этой клетки на карте и все остальные клетки на карте уже заняты, то пройти в эту точку нельзя.
Да, кстати, забыл добавить, что придётся создавать массив из 65 536 числовых элементов. Это можно реализовать следующим образом. Создать несколько однотипных массивов по 8192 числовых элементов. Данный огромный массив будет состоять из 8 таких массивов. В который мы с помощью отдельных функций и будем записывать и забирать наши числовые значения. А именно числовые значения удалённости от первой точки на карте. До следующей точки на карте.
2
16
7 лет назад
2
строка не может быть длиннее 1023, или 4095, если использовать сложение. не говоря уже о тормознутости варкрафта в работе со строками. на скриптовом языке типа жасса дорогу прощупать невозможно, это "забей"
0
9
7 лет назад
0
Я ещё подумаю пока. Может быть, через 4 массива сделать ту же самую систему.
0
21
7 лет назад
Отредактирован Raised
0
Можно проверить только проходимость отдельной точки. Тебе стоит разобраться с тем как работает поиск пути в игре и, возможно, написать копию системы расчета пути.
Дальше правильно настроить даммика/предмет и прогнать его по этому пути. Если координаты, в которые ты его перенесешь не совпадут с координатами, которые вернет проверка - на пути есть препятствие, к точке пройти нельзя. Не уверен что это будет работать в цикле и не знаю что будет с производительностью.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.