![]() |
Цитата:
Цитата:
|
я сам глубоко не вникал, но вроде сама проверка столкновений там совершенно не тайловая
|
Цитата:
Добавлено через 1 минуту Если вас смутило слово grid в коде, то это виртуальная сетка для ускорения расчетов столкновений. |
Так получается, что данный пример столкновений полностью ставит под сомнения мои уже готовые наработки по алгоритму движения героя и арены. А учитывая, что это мой первый опыт не только игры, но и AS3 - попробовать сделать гибрид - нереально на данном этапе. Поэтому хотел бы вернуться к предложенной мной схеме (рис.).
Схема игры и ее алгоритм были придуманы тут. На рисунке, который был приведен чуть ранее видно, что к арене и герою добавилось еще одно действующее лицо - враг (тоже в виде окружности), который движется за героем по тому же самому алгоритму, что и герой движется за мышкой, только скорость врага ниже. Задача номер один: переделать старый алгоритм на новый лад. С этим туговато... я вижу лишь более менее красивый выход - это если в функции движения врага они столкнулись, то враг останавливается, а герою надо передать новую функцию, описывающую его движение... Вообщем, идея есть, но четкой логической структуры пока нет. Поэтому прошу помощи по этому пункту - это основа для будущих рассуждений. Задача номер два: понять каким образом изменится уравнение движеня героя при выходе на круговую траекторию. Нынешнее движение задано через следующую функцию: Код AS3:
Код AS3:
Добавлено через 8 минут Данная задача фактически сводится к чему-то в духе: получить точку касания А на красной штриховой линии (т.е. угол соприкосновения героя и врага). Провести 2 касательные к окружности и из них выбрать ту точку, которая ближе к нашей точке А. Запустить героя по новой (круговой) траектории, сохранив скорость. При достижении точки - опять линейная траектория. Вариант, когда мышь в пределах круга - еще проще. Не нужны вообще касательные - достаточно лишь продлить отрезок ВC' до пересечения с кругом. Это и будет финальная точка нашего героя. |
Предлагаю такой механизм:
Персонаж знает куда ему надо попасть и какая у него скорость. Каждый шаг персонаж высчитывает направление движения и точку куда ему шагнуть. Перед тем как шагнуть персонаж проверяет не будет-ли столкновения с каждой из соседних преград Если позиция куда он идёт не свободна( сумма радиусов меньше расстояния между центрами) то направление движения корректируется сперва пробуем +10граудусов потом -10, +20, -20, +30, -30 и так пока не появится возможность пройти Такая схема позволит обойти несколько преград сразу, но персонаж не будет выбирать кратчайшую дорогу и может залезть в тупик если персонаж должн быть умнее, ходить кратчайшей дорогой, и уметь не заходить в тупики, то тогда надо копать в этом направлении: http://wonderfl.net/c/aWCe http://lab.polygonal.de/2007/06/13/d...e-graph-class/ |
| Часовой пояс GMT +4, время: 07:25. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.