В настоящее время в моей очень базовой структуре ИИ есть агенты, которые движутся по неровной траектории, состоящей из ряда точек.
Они делают это, просто перемещая свою позицию из одной точки в другую. Когда они достигают следующей точки, они движутся к следующей и так далее. Как я могу изменить это так, чтобы они плавно двигались по изогнутой версии пути, и как мне сгенерировать кривую?
mathematics
algorithm
path-finding
SirYakalot
источник
источник
Ответы:
Вы после некоторого сглаживания пути. Конечно, как указал Буммзак, вы также хотите убедиться, что любое сглаживание пути, которое вы выполняете, приводит к легальным перемещениям ваших агентов.
В этой статье от Gamasutra объясняется почти все, что вам нужно знать, включая сглаживание пути, правовые повороты и реалистичные алгоритмы сглаживания поворотов.
Другой альтернативой, которая немного проще, является использование поведения Seek с небольшим ограничивающим кругом / сферой, чтобы проверить, находится ли агент в следующей точке пути или близко к ней.
источник
Поскольку вы уже знаете свои контрольные точки, вам просто нужно обновить код интерполяции, чтобы использовать алгоритм кривизны (например, Эрмита или Косинуса).
Эти сайты предлагают отличное объяснение и пример кода, который должен помочь вам начать:
Пол Бурк Методы интерполяции
Sol :: Учебники - Интерполяционные хитрости
источник
Я собираюсь пойти против структуры и предположить, что вместо предварительной генерации ваших кривых, просто обрабатывайте их по кадрам, используя (например) ту же логику, которую вы использовали бы для создания поиска -missile .
Это будет намного проще и, возможно, более реалистично, потому что вам не нужны особые случаи, когда между двумя точками есть стены - вы просто обрабатываете обнаружение столкновений, как обычно.
Недостатком является то, что движение будет выглядеть неоптимально. Объект всегда будет идти по самому прямому пути от одной путевой точки к другой, то есть, в отличие от сплайна, он не начнет поворачиваться к путевой точке 3, пока он уже не пройдет путевую точку 2. В зависимости от вашей ситуации это может или не может произойти быть исправимым путем корректировки ваших путевых точек (если это даже проблема).
источник
Поиск пути должен дать вам путь, и вы не должны изменять его. Я верю, что можно изменить алгоритм поиска пути, чтобы учесть, что траектории с крутыми поворотами хуже, чем с гладкими кривыми, как это уже имеет место с длинными путями по сравнению с короткими.
Я опубликую здесь какое-то решение, если найду момент, чтобы глубоко задуматься над этим, но я думаю, что это путь.
источник