Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.11.2011, 20:45
australian incognito вне форума Посмотреть профиль Отправить личное сообщение для australian incognito Найти все сообщения от australian incognito
  № 1  
Ответить с цитированием
australian incognito
 
Аватар для australian incognito

Регистрация: Sep 2005
Адрес: Минск
Сообщений: 389
Цитата:
Сообщение от artcraft Посмотреть сообщение
я думаю тут нужно сразу подумать о том что могут быть и другие преграды
Буду решать проблемы по мере их поступления, плюс к этому - научусь обходить сложные фигуры - с простыми будет легче.
Цитата:
Сообщение от artcraft Посмотреть сообщение
мне кажется вот это как раз то что надо http://wonderfl.net/c/m29Y
Увы, интересный движок, но как я понял - там игровое поле строится из тайлов и на базе этого идут все расчеты... Мне это не подходит, к сожалению.

Старый 23.11.2011, 20:59
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 2  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
я сам глубоко не вникал, но вроде сама проверка столкновений там совершенно не тайловая
__________________
Хороший отдых - половина работы.

Старый 23.11.2011, 21:36
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Увы, интересный движок, но как я понял - там игровое поле строится из тайлов и на базе этого идут все расчеты...
Там нет тайлов.

Добавлено через 1 минуту
Если вас смутило слово grid в коде, то это виртуальная сетка для ускорения расчетов столкновений.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 25.11.2011, 04:50
australian incognito вне форума Посмотреть профиль Отправить личное сообщение для australian incognito Найти все сообщения от australian incognito
  № 4  
Ответить с цитированием
australian incognito
 
Аватар для australian incognito

Регистрация: Sep 2005
Адрес: Минск
Сообщений: 389
Так получается, что данный пример столкновений полностью ставит под сомнения мои уже готовые наработки по алгоритму движения героя и арены. А учитывая, что это мой первый опыт не только игры, но и AS3 - попробовать сделать гибрид - нереально на данном этапе. Поэтому хотел бы вернуться к предложенной мной схеме (рис.).
Схема игры и ее алгоритм были придуманы тут. На рисунке, который был приведен чуть ранее видно, что к арене и герою добавилось еще одно действующее лицо - враг (тоже в виде окружности), который движется за героем по тому же самому алгоритму, что и герой движется за мышкой, только скорость врага ниже.

Задача номер один: переделать старый алгоритм на новый лад. С этим туговато... я вижу лишь более менее красивый выход - это если в функции движения врага они столкнулись, то враг останавливается, а герою надо передать новую функцию, описывающую его движение... Вообщем, идея есть, но четкой логической структуры пока нет. Поэтому прошу помощи по этому пункту - это основа для будущих рассуждений.
Задача номер два: понять каким образом изменится уравнение движеня героя при выходе на круговую траекторию. Нынешнее движение задано через следующую функцию:
Код AS3:
private function followMe(target:Point, obj:Object):void {
			var dx:Number = target.x - obj.x;
			var dy:Number = target.y - obj.y;
			var dx1:Number = mouseX - obj.x;
			var dy1:Number = mouseY - obj.y;
			var angle:Number = Math.atan2(dy, dx);
			var angle1:Number = Math.atan2(dy1, dx1);
			var dist:Number = Math.sqrt(dx*dx + dy*dy);
 
			if(dist > obj.step) {
				var tgtX:Number = obj.step * Math.cos(angle);
				var tgtY:Number = obj.step * Math.sin(angle);
				hero.rotation = angle1*180/Math.PI;
				obj.x += tgtX;
				obj.y += tgtY;
			}
		}
Тут я в качестве параметра target задаю координаты мыши, а в качестве параметра obj - экземпляр класса героя. И тут главный вопрос, каким образом изменятся 2 строчки:
Код AS3:
var tgtX:Number = obj.step * Math.cos(angle);
var tgtY:Number = obj.step * Math.sin(angle);
чтобы герой не только начал двигаться по окружности (вокруг врага - см. рис), но и сохранил свою первоначальную скорость при этом.

Добавлено через 8 минут
Данная задача фактически сводится к чему-то в духе:
получить точку касания А на красной штриховой линии (т.е. угол соприкосновения героя и врага). Провести 2 касательные к окружности и из них выбрать ту точку, которая ближе к нашей точке А. Запустить героя по новой (круговой) траектории, сохранив скорость. При достижении точки - опять линейная траектория.
Вариант, когда мышь в пределах круга - еще проще. Не нужны вообще касательные - достаточно лишь продлить отрезок ВC' до пересечения с кругом. Это и будет финальная точка нашего героя.


Последний раз редактировалось australian incognito; 25.11.2011 в 05:00.
Старый 25.11.2011, 15:03
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 5  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
Предлагаю такой механизм:

Персонаж знает куда ему надо попасть и какая у него скорость.
Каждый шаг персонаж высчитывает направление движения и точку куда ему шагнуть.
Перед тем как шагнуть персонаж проверяет не будет-ли столкновения с каждой из соседних преград
Если позиция куда он идёт не свободна( сумма радиусов меньше расстояния между центрами)
то направление движения корректируется сперва пробуем +10граудусов потом -10, +20, -20, +30, -30
и так пока не появится возможность пройти

Такая схема позволит обойти несколько преград сразу,
но персонаж не будет выбирать кратчайшую дорогу и может залезть в тупик

если персонаж должн быть умнее, ходить кратчайшей дорогой, и уметь не заходить в тупики,
то тогда надо копать в этом направлении:
http://wonderfl.net/c/aWCe
http://lab.polygonal.de/2007/06/13/d...e-graph-class/
__________________
Хороший отдых - половина работы.

Создать новую тему Ответ Часовой пояс GMT +4, время: 09:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 09:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.