Просмотр полной версии : Обхождение препятствий
CHypakabryCH
04.02.2007, 00:25
Ситуация такая: есть персонаж флеш-игры, который идёт туда, куда кликнет пользователь. На местности есть препятствия. Пока с помощью hitTest'а удалось добиться лишь того, что персонаж останавливается, уткнувшись в препятствие, если между начальной и целевой точкой есть преграда. А нужно сделать так, чтобы он хотя бы как-то её обходил(желательно - отыскивал кратчайший путь).
ЗЫ я работаю flash 8
Есть куча алгоритмов на эту тему. В гугле «обхождение препятствий».
CHypakabryCH
04.02.2007, 16:21
Конечно, но сколько из них реализовано на флеше? Может, есть конкретная ссылка?
http://flasher.ru/forum/search.php
http://google.ru
Русский язык вроде знаете, так что конкретное придется искать самому.
можешь свой алгоритм написать. объект значит по прямой идет? Делаешь проверку, не проходит ли эта прямая через препятствие, если проходит, то, к рримеру, поворачиваем прямую по часовой стрелке относительно объекта пока тест на пересечение пути с препятствием не даст отрицательный результат. В этом случае идем по новому путь пока не поровняемся с объектом. Далее опять проводим прямую пути от объекта к цели. Проводим тест, не пересекается ли ... и т.д. Это простейший пример. Если тебе надо найти кратчайший путь то имеет смысл сначала вычислить все пути, сравнить их, а потом уже идти по ним.
Kyber Anton
04.02.2007, 19:52
Я ВЫКЛАДЫВАЛ здесь исходник с таким алгоритмом... Поищи...
CHypakabryCH
04.02.2007, 20:40
Сложность здесь в том, что к номеру кадра уже нельзя привязаться - нужно проанализировать все пути за 1 кадр. А объект идёт не по прямой, а просто в каждом кадре к его х и у прибавляется скорость, умноженная на угловой коэф. Что ж...Будем искать. Гугл дал идею, но конкретно НА ФЛЕШЕ ничего не нашел пока(
CHypakabryCH
04.02.2007, 20:43
Общее решение ясно: для вычисления пути нужно как-то совместить фон с клеточной матрицей, чтобы была функция, которая для любого х и у на поле даёт результат - можно сюда наступать или нет? Буду думать, как это сделать
CHypakabryCH
04.02.2007, 21:59
Да что я тут всё на пальцах: вот сам файл
CHypakabryCH
04.02.2007, 22:33
Клетки сдесь не годятся, нужно именять угловой коэффициент таким образом, чтобы при "подлёте" к препятствию мувик начинал двигаться по касательной к его поверхности в ближайшем к цели направлении. Только вот как определить касательную независимо от геометрической формы препятствия? неужто производную искать?
Storm[pfp]
05.02.2007, 09:30
посмотри тут http://noregret.org/tutor/n/grid/ вроде по теме
ISBN 5-93378-089-8
Джоб Макар "Секреты разработки игр в macromedia flash mx"
Жень Шень
14.02.2007, 11:40
Да что я тут всё на пальцах: вот сам файл
Привет!
Вот 2 примера с этого форума.
Решения не столь фундаментальные, как приведеные выше, но все же...
Особенно обхождение круга. Ну, так похоже на "сам файл"
:bye:
http://algolist.manual.ru/maths/graphs/shortpath/smartmove.php
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.