Просмотр полной версии : анимация движения поезда
Smirnoff
06.09.2005, 16:48
Назрела необходимость (причем срочная) нарисовать поезд в движении.
Причем со всеми прямыми и поворотами.
Как вариант пробывал сделать каждый из вагонов клипом и прописать условия движения в зависимости от координат (повоторы делал с помощью _rotation и _x+= и _y+=)
Работает, но выглядит жутко коряво, потому как на поворотах нарушается целостность состава ..
Может есть другие способы ?
вид какой?
сверху или изометрия?
Smirnoff
06.09.2005, 17:04
вобще-то аксонометрия, в 3-х координатах то есть ..
Smirnoff
06.09.2005, 17:09
видимость объемной картинки в принципе можно сделать нарисовав объемными символы локомотива и вагонов, но сейчас важнее сам алгоритм придумать ..
времени в обрез ..
фигасе задача, это тебе надо либо скриптами рисовать трехмерный вагончик, либо спрайтами задавать, например 36 положений этого вагончика, это при условии что ты делаешь это в изометрии (как частный случай аксонометрии)
Концептульно каким бы нибыл путь для каждого вагона тебе надо задавать три параметра x,y в переводе на изометрическую плоскость + угол поворота (номер кадра спрайтового набора).
Принципиально задача решаема. На каждом отрезке пути хранишь старые и новые значения координат, по разнице высчитываешь тригонометрическую величину поворота вагончика. И так для каждого объекта. Основной трабл здесь перевод из абсолютных координат в аксонометрию можно либо высчитывать параметрически либо создать массив-таблицу соответствий. Второе в контексте проще.
Smirnoff
06.09.2005, 17:33
Да нет, все не так страшно ..
С меня пока эмулятор железной дороги не требуют ))
Все немного проще - нужно нарисовать именно схематичное движение состава по путям, при этом вагончики можно вообще хоть параллелепипедами рисовать ..
Важно, чтоб в нужное время поезд ехал прямо (что элементарно), а в нужное поворачивал по направлению движения рельсов.
Причем не весь сразу естесственно, а все вагоны по очереди ...
Может вообще без явного указания координат можно обойтись и привязать движение вагонов к рельсам (по аналогии со "snap to path") ?
понятно, тогда напрашивается использование хиттеста.
я так понимаю путь задается динамически.
Smirnoff
06.09.2005, 17:51
И еще немного в ту же сторону:
Если пользоваться моим методом ( _rotation, _x+=, _y+=)
возможно ли описать движение как функцию, чтоб потом просто вызывать ее для каждого объекта с параметрами исходных и конечных координат и угла поворота ?
Smirnoff
06.09.2005, 17:54
и в каком месте тут хиттест можно применить ?
я так понял он просто проверку двух клипов на пересекаемость производит ?
а путь задается именно динамически ..
Путь задается динамически, имея функцию пути (скорее всего прямые отрезки) рисуем путь используя ActionScript. Получаем фигуру относительно которой будет двигаться состав. Например для каждого вагона прибавляем "y" пока не соприкоснемся с фигурой пути, если на новом шаге прикосновение существует, отнимаем "y". Поворот вычисляется соответственно.
а путь-то вообще произвольной кривизны чтоли может быть? ты корявый вариант покажи чтоли, чтобы было понятно, чего тебе хочется.
впринципе можно скриптами отрисовать путь любой кривизны, сложней конечно но можно.
т.к. движение в данном случае является дискретным, т.е. разбитым на набор статичных положений, возникает такой вариант: (предположим, что поезд вижется со скоростью 1 вагон в 10 кадров) на момент 10го кадра положение 1 го вагона (координаты и угол поворота) == положению паровоза в первом кадре, второго вагона в 10кадре == положение первого вагона в 1 кадре и тд.
кроме того возможно пригодится допущение о прямолинейности изменений, т.е. зная что в 10м кадре вагон будет на месте паровоза изменение координат и поворота поделить на десять и поочередно присваивать вагону (хотя это проканает только при незначительных поворотах).
если же говорить о эмуляторе железной дороги, то необходимо представить ось рельсов в виде функции (или множества точек расположеных настолько близко друк к другу, что отрезки между ними можно полагать прямыми) и располагать паровоз(и) вагоны так, чтобы их ось в области колес находилась над осью железной дороги.
кстати если кусок анимации небольшой то возможно проще его будет нарисовать руками...
Smirnoff
07.09.2005, 08:40
Высылаю текст скрипта и swf, потому что исходник не проходит по размеру (~900 кБ).
Проблема при проходе поездом 2-го поворота.
Помощь требуется срочно !!!
скрипт не смотрел, но паравоз твой едет нормально :) разрыв состава не есть проблема скрипта, скорее проблема анимации. сделай между вагонами сцепку и не заморачивайся. я бы сделал это очень тупо: у каждого вагона прицепил бы маааленький мувик в месте сцепки, и ориентируясь на его координаты просто соединял бы соседние вагоны линией. это из разряда решений на скорую руку. а по-хорошему, надо рисовать дополнительные спрайты для движения по диагоналям (как минимум), у которых д.б. виден торец вагона и хотя бы один спрайтик для вагона, находящегося на стрелке. иначе плоский паравозик по угловатым путям в любом случае будет ездить неправдоподобно.
Smirnoff
07.09.2005, 09:45
Со спрайтами разбираться сейчас времени нет совсем, а по моему скрипту вопрос только один - почеему после 2-го поворота поезд не останавливается, хотя цикл должен прекращаться, а едет дальше по диагонали (возрастают x и y) ..
мне не хотелось бы никого обидеть, но скрипт несмотря на некоторую откоментаренность довольно крив (отслеживание состояний с помощью многих ифов приводит к сумбуру) поэтому рекомендую ознакомиться с этим скриптом, а вообще то говоря данную задачу (если нет глобальных) препятствий на мой взгляд надлежит решать не с помощью программирования, а посредством обычеых анимаций
(скрипт я писал минут сорок, а анимации таеого рода делать 10 минут)
Smirnoff
08.09.2005, 10:35
никто и не обижен по причине того, что в курсе глубины своих знаний в программировании на as ))
это всего лишь мой 3-й по счету скрипт с момента начала изучения as и относиться к нему дОлжно соответственно ..
я его кстати уже переделал основательно ..
все, качаю твой и сажусь за изучение ..
p.s. а по поводу непрограммной анимации - просто будет очень много подобных схем и отличаться они будут только координатами путей и стрелок, так что программно менять все это дело будет явно проще ..
Smirnoff
08.09.2005, 13:28
все-таки появляются сомнения ..
если основная задача - анимирование ж/д аварий и столкновений, то может действительно перейти на простую анимацию ?
схем придется рисовать много, но содержание примерно одинаковое - едет поезд или локомотив, в определенные моменты они должны поворачивать, в определенные сталкиваться и падать ..
все это нужно завязать со светофорами (цвет) и стрелками (2 положения) ...
что посоветуете ?
Smirnoff
08.09.2005, 17:56
to PITer:
посмотрел скрипт ...
мне конечно так самому бы не сделать ))
вопросы возникли:
- как подбирал координаты для массива описывающего поворот ?
- откуда взялся sin пи/4*2 и такой же косинус ?
- где задается количество вагонов (индекс "i"), то есть сколько их может быть ?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.