Как задать персонажу траекторию движения чтобы он обходил препятствия?
Делаю игру на javascript, стратегия где персонаж передвигается по клику на точку. Проблема в том что он проходит сквозь препятствия, а я не знаю как сделать чтоб он их обходил. Раньше далал игру с матрицой, где передвижения были по квадратах и задавал проходимые и непроходимые участки. В случае с вектором не знаю как правильно сделать. Есть вариант создать чернобелую копию карты где черным обозначить непроходимые участки, но тогда опять же не знаю как ему отыскать путь среди них. Подскажите пожалуйста как задать такое передвижение, чтоб персонаж огибал непроходимые участки.
Я знаком немного с алгоритмами поиска пути. Проблема в том что если раньше у меня была матрица, и я знал что объект занимает в определенном месте 4 квадрата, то была возможность его обойти. Сейчас я делаю на three.js и объект просто лежит на платформе. Я не знаю как рассчитать чтоб персонаж обошел объект по форме. Может мне зарание составить матрицу с непроходимимы координатами?
prevolley, хорошая мысль, кстати, в стратегиях так и делается.
Написано
Saboteur
@saboteur_kiev Куратор тега Разработка игр
software engineer
Обычно так и делается - создается матрица объектов, по ней и вычисляется
А отрисовывается карта уже независимо, точнее опираясь на ваш массив с объектами.
Но да, рассчеты по прохождению делаются не по картинке, а по массиву "геодаты"
Что-то не могу составить нормально запрос в гугле по поиску пути по геодате. У меня есть персонаж и деревья , вручную разбил карту на клетки с проходимимы и непроходимимы участками. Использовал алгоритм поиска пути по клетках из интернета и теперь персонаж проходит путь, но под прямимы углами, от точки к точке.
Можете подсказать где искать? Чтоб персонаж по дуге обходил дерево, а не под прямими углами.
Также клетки получились у меня очень крупными, так как маленькие долго считает.
Написано
Saboteur
@saboteur_kiev Куратор тега Разработка игр
Дерево должно быть не одной большой клеткой, а несколькими. Чем больше клеток, тем можно более "круглыми" делать объекты для обхода.
геодата может быть сложной - не просто набор клеток, а структурой с переменчивым размером "клетки". Не только с обозначением "непроходимой области", но и малопроходимой, или с указанием высоты, с указанием прозрачности.
Ну и да, собственно векторная 3д графика этим и грешит, что на две следующие задачи уходит ОЧЕНЬ много просчетов - видно ли из точки А точку Б, учитывая все объекты, их прозрачность и наличие "окон", и можно ли пройти из точки А в точку Б.
Возможно на javascript не очень хорошо делать такие расчеты. Можно подумать насчет заранее прегенеренных путей для отдельных мест. Либо пользоваться каким-нить вебассембли.