Поиск игрового пути: поиск кратчайшего пути между двумя точками с взвешенными поверхностями - PullRequest
0 голосов
/ 25 марта 2012

Я делаю 2D-игру на основе карт.Игрок управляет одним персонажем, в то время как несколько персонажей, контролируемых ИИ, двигаются как можно быстрее к игроку.Игрок хочет избежать их.

Существует несколько типов поверхностей, по которым игрок и ИИ могут двигаться, и у каждого есть разные бонусы к движению.У меня есть карта с цветовой кодировкой под картой «переднего плана», где она будет использоваться в каждом игровом цикле для определения текущей скорости каждого персонажа.Например, сегменты черных линий могут представлять межштатную автомагистраль и давать больший бонус к движению, чем ходить по зеленой траве в сторону.

Я не парень из CS, поэтому хочу убедиться, что я 'у нас отключен высокоуровневый алгоритм поиска пути AI.Вот что я думаю: - Враг всегда будет на одном типе пути.Мы должны постоянно проверять (используя формулу расстояния таким образом, чтобы учитывать значения перемещения различных поверхностей), будет ли перемещение к смежной поверхности быстрее, чем пребывание на текущей поверхности.Таким образом, мы должны сравнить два расстояния (1), оставаясь на текущей поверхности и (2) переключаясь на соседнюю поверхность.-Используйте линию между текущей позицией и целевой позицией, чтобы проверить, какие типы поверхностей будут пересекаться.Используйте это, чтобы учесть ваши значения движения в формуле расстояния.

О чем еще мне нужно подумать?

Ответы [ 2 ]

1 голос
/ 25 марта 2012

А как насчет *?Эта страница имеет начальную точку зрения, которая именно то, что вы хотите сделать: http://www.policyalmanac.org/games/aStarTutorial.htm

0 голосов
/ 25 марта 2012

Я думаю, что вам нужен алгоритм A *.Я уверен, что вы можете найти его во многих местах, но вот теоретическое объяснение:

A * wikipedia

Силл, я думаю, вам будет лучшезадавать подобные вопросы в Игровой группе Stack Overflows

Здесь отличный ответ с этого сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...