В настоящее время я делаю игру RTS в единстве, и мне нужен способ рассчитать кратчайший путь между двумя точками на непрерывной 2d-плоскости, где есть определенные препятствия.Алгоритм обработки непрерывного пространства поиска?
У меня есть начальная позиция, конечная позиция и функция, которая может проверить, действительно ли позиция. Мне нужен алгоритм, который возвращает последовательность точек для перемещения, чтобы добраться до места назначения.
Большинство алгоритмов пути, таких как A * и IDA *, которые, как я знаю, требуют дискретизированных поисковых пространств. Я бы разделил самолет на сетку сам, но я боюсь, что это приведет к появлению зигзагообразных узоров, которые выглядят действительно неестественными при движении по диагонали. Есть ли способ облегчить эту проблему или другой алгоритм изменения, который я могу использовать? Ему даже не нужно найти абсолютный кратчайший путь, просто путь, который имеет смысл.
Возможно, вы найдете лучшие решения на gamedev.SE. Каждая реализация, которую я видел до сих пор (не так много), помещает произвольные «узлы» в пространстве, дискретируя ее. Если вы умны (и щедрые) с местами мест размещения и узлов, это выглядит несколько естественным. – Mephy
Что вы хотите, это сетевая сетка и использовать A * (или аналогичную, всю работу). Есть много способов архивировать это, от создания его вручную, до полностью автоматических решений - все они слишком много для подробного описания в этом формате. Но в Интернете много статей. Почему вы не используете встроенное навигационное решение Unitys? – yes