Я пытался реализовать простой поиск пути, но результат был менее удовлетворительным, чем то, что я намеревался достичь. Дело в том, что юниты в таких играх, как Starcraft 2, движутся во всех направлениях, тогда как юниты в моем случае движутся не более чем в 8 направлениях (стиль Warcraft 1), так как эти 8 направлений направлены к следующим доступным узлам (они перемещаются из одной плитки в следующую соседнюю плитку) , Что мне нужно сделать, чтобы добиться результата как в Starcraft 2? Уменьшить размер плитки?
На картинке вы видите горизонтальную линию каменных плиток, являющихся препятствиями, а найденный путь отмечен зелеными плитками. Красная линия - это путь, которого я хочу достичь.
game-design
game-mechanics
path-finding
Кои Нам Нг
источник
источник
Ответы:
Однако для хорошего алгоритма поиска пути использование A * было бы хорошей идеей для простой игры, которая не требует сложного, эффективного или эффективного поиска пути, просто заставляя персонажей двигаться к цели, выясняя направление движения. цель должна быть достаточной.
Вы можете сгенерировать «график видимости» (какие другие точки видны из каждой точки) из вершин и затем выполнить A * на графике. Это работает, потому что кратчайший путь всегда будет лежать на графике видимости.
Сократить размер плитки может помочь вам.
Ресурсы
Дальнейшее чтение
РЕДАКТИРОВАТЬ: Мне нравится комментарий @ MarkusvonBroady.
Ресурсы
От @MarkusvonBroady
Я сделал поиск, найти следующие (которые могут вам помочь)
источник
Начиная с одного конца исходного пути, скажем
path[0]
, вы можете удалить ,path[1]
если сегмент образуется путем объединения точекpath[0]
иpath[2]
не пересекается с любой стене. Пройдя дальше, пока последний сегмент не предоставит более простой путь.Это не только сгладит путь, но и удалит некоторые бесполезные точки, например, огонь, 3 последовательных отрезка прямой линии.
источник