Дано: 2D игра, бесконечная плоскость с препятствиями.
Задача: Научить AI проходить из точки А в точку B по оптимальной траектории. С огибанием препятствий разумеется.
Гугление подсказывает мне, что NavMesh в 2D не работает, предлагается использовать самописный вариант A*. Меня смущает, что A* и его альтернативы - графовые алгоритмы, т.е. сначала мне нужно будет построить на карте узлы графа. А так как точка назначения и препятствия могут перемещаться, перестройку графа и узлов нужно будет производить в каждый Update моего AI. Все это кажется сомнительным с точки зрения производительности. Да и тратить время на написание велосипеда не хочется.
Что мешает сделать в 3d? Фиксируешь камеру с нужного ракурса и вот тебе псевдо 2d. Так обычно проще и быстрее. Unity в первую очередь 3d движок и соответственнофункционал при работе в 3д больше. А там уже дело за малым, повернул объекты в нужную плоскость, вырубил тени и т.д.
Если принципиально делать в 2d, то мне кажется это возможным через вектор направления и райкасты, но если это нечто типа лабиринта... может быть еще вейпоинты добавить.
"Что мешает сделать в 3d? Фиксируешь камеру с нужного ракурса и вот тебе псевдо 2d. Так обычно проще и быстрее. Unity в первую очередь 3d движок и соответственнофункционал при работе в 3д больше. А там уже дело за малым, повернул объекты в нужную плоскость, вырубил тени и т.д." - рассматривал этот вариант, но он показался кривоватым.
"Если принципиально делать в 2d, то мне кажется это возможным через вектор направления и райкасты, но если это нечто типа лабиринта... может быть еще вейпоинты добавить." - я уже сделал через смесь рейкастов и A*. А что вы понимаете под вейпоинтами, узлы графа?
Ну тут кто что понимает.) Можно натыкать геймобжектов пустых и создать "маршрут" проходящий к "цели", через них... Это всё очень абстрактно и возможно в каком-то случае это оптимальный вариант. Хотя для меня всё-же лучше было бы делать через НавМеш. Райкасты канают, когда это допустим гонки или что-то такое, а в случае с лабиринтом, ну даже не знаю. Зачастую самый простой вариант, это использовать функции 3д, плейник и спрайты повернул, и всё работает. Это всё моё личное мнение и не претендует быть правдой.