![]() |
анимация движения поезда
Назрела необходимость (причем срочная) нарисовать поезд в движении.
Причем со всеми прямыми и поворотами. Как вариант пробывал сделать каждый из вагонов клипом и прописать условия движения в зависимости от координат (повоторы делал с помощью _rotation и _x+= и _y+=) Работает, но выглядит жутко коряво, потому как на поворотах нарушается целостность состава .. Может есть другие способы ? |
вид какой?
сверху или изометрия? |
вобще-то аксонометрия, в 3-х координатах то есть ..
|
видимость объемной картинки в принципе можно сделать нарисовав объемными символы локомотива и вагонов, но сейчас важнее сам алгоритм придумать ..
времени в обрез .. |
фигасе задача, это тебе надо либо скриптами рисовать трехмерный вагончик, либо спрайтами задавать, например 36 положений этого вагончика, это при условии что ты делаешь это в изометрии (как частный случай аксонометрии)
|
Концептульно каким бы нибыл путь для каждого вагона тебе надо задавать три параметра x,y в переводе на изометрическую плоскость + угол поворота (номер кадра спрайтового набора).
Принципиально задача решаема. На каждом отрезке пути хранишь старые и новые значения координат, по разнице высчитываешь тригонометрическую величину поворота вагончика. И так для каждого объекта. Основной трабл здесь перевод из абсолютных координат в аксонометрию можно либо высчитывать параметрически либо создать массив-таблицу соответствий. Второе в контексте проще. |
Да нет, все не так страшно ..
С меня пока эмулятор железной дороги не требуют )) Все немного проще - нужно нарисовать именно схематичное движение состава по путям, при этом вагончики можно вообще хоть параллелепипедами рисовать .. Важно, чтоб в нужное время поезд ехал прямо (что элементарно), а в нужное поворачивал по направлению движения рельсов. Причем не весь сразу естесственно, а все вагоны по очереди ... Может вообще без явного указания координат можно обойтись и привязать движение вагонов к рельсам (по аналогии со "snap to path") ? |
понятно, тогда напрашивается использование хиттеста.
я так понимаю путь задается динамически. |
И еще немного в ту же сторону:
Если пользоваться моим методом ( _rotation, _x+=, _y+=) возможно ли описать движение как функцию, чтоб потом просто вызывать ее для каждого объекта с параметрами исходных и конечных координат и угла поворота ? |
и в каком месте тут хиттест можно применить ?
я так понял он просто проверку двух клипов на пересекаемость производит ? а путь задается именно динамически .. |
Путь задается динамически, имея функцию пути (скорее всего прямые отрезки) рисуем путь используя ActionScript. Получаем фигуру относительно которой будет двигаться состав. Например для каждого вагона прибавляем "y" пока не соприкоснемся с фигурой пути, если на новом шаге прикосновение существует, отнимаем "y". Поворот вычисляется соответственно.
|
а путь-то вообще произвольной кривизны чтоли может быть? ты корявый вариант покажи чтоли, чтобы было понятно, чего тебе хочется.
|
впринципе можно скриптами отрисовать путь любой кривизны, сложней конечно но можно.
|
есть такая мыслишка
т.к. движение в данном случае является дискретным, т.е. разбитым на набор статичных положений, возникает такой вариант: (предположим, что поезд вижется со скоростью 1 вагон в 10 кадров) на момент 10го кадра положение 1 го вагона (координаты и угол поворота) == положению паровоза в первом кадре, второго вагона в 10кадре == положение первого вагона в 1 кадре и тд.
кроме того возможно пригодится допущение о прямолинейности изменений, т.е. зная что в 10м кадре вагон будет на месте паровоза изменение координат и поворота поделить на десять и поочередно присваивать вагону (хотя это проканает только при незначительных поворотах). если же говорить о эмуляторе железной дороги, то необходимо представить ось рельсов в виде функции (или множества точек расположеных настолько близко друк к другу, что отрезки между ними можно полагать прямыми) и располагать паровоз(и) вагоны так, чтобы их ось в области колес находилась над осью железной дороги. кстати если кусок анимации небольшой то возможно проще его будет нарисовать руками... |
Вложений: 1
Высылаю текст скрипта и swf, потому что исходник не проходит по размеру (~900 кБ).
Проблема при проходе поездом 2-го поворота. Помощь требуется срочно !!! |
скрипт не смотрел, но паравоз твой едет нормально :) разрыв состава не есть проблема скрипта, скорее проблема анимации. сделай между вагонами сцепку и не заморачивайся. я бы сделал это очень тупо: у каждого вагона прицепил бы маааленький мувик в месте сцепки, и ориентируясь на его координаты просто соединял бы соседние вагоны линией. это из разряда решений на скорую руку. а по-хорошему, надо рисовать дополнительные спрайты для движения по диагоналям (как минимум), у которых д.б. виден торец вагона и хотя бы один спрайтик для вагона, находящегося на стрелке. иначе плоский паравозик по угловатым путям в любом случае будет ездить неправдоподобно.
|
Со спрайтами разбираться сейчас времени нет совсем, а по моему скрипту вопрос только один - почеему после 2-го поворота поезд не останавливается, хотя цикл должен прекращаться, а едет дальше по диагонали (возрастают x и y) ..
|
попробуй так
Вложений: 1
мне не хотелось бы никого обидеть, но скрипт несмотря на некоторую откоментаренность довольно крив (отслеживание состояний с помощью многих ифов приводит к сумбуру) поэтому рекомендую ознакомиться с этим скриптом, а вообще то говоря данную задачу (если нет глобальных) препятствий на мой взгляд надлежит решать не с помощью программирования, а посредством обычеых анимаций
(скрипт я писал минут сорок, а анимации таеого рода делать 10 минут) |
никто и не обижен по причине того, что в курсе глубины своих знаний в программировании на as ))
это всего лишь мой 3-й по счету скрипт с момента начала изучения as и относиться к нему дОлжно соответственно .. я его кстати уже переделал основательно .. все, качаю твой и сажусь за изучение .. p.s. а по поводу непрограммной анимации - просто будет очень много подобных схем и отличаться они будут только координатами путей и стрелок, так что программно менять все это дело будет явно проще .. |
все-таки появляются сомнения ..
если основная задача - анимирование ж/д аварий и столкновений, то может действительно перейти на простую анимацию ? схем придется рисовать много, но содержание примерно одинаковое - едет поезд или локомотив, в определенные моменты они должны поворачивать, в определенные сталкиваться и падать .. все это нужно завязать со светофорами (цвет) и стрелками (2 положения) ... что посоветуете ? |
to PITer:
посмотрел скрипт ... мне конечно так самому бы не сделать )) вопросы возникли: - как подбирал координаты для массива описывающего поворот ? - откуда взялся sin пи/4*2 и такой же косинус ? - где задается количество вагонов (индекс "i"), то есть сколько их может быть ? |
| Часовой пояс GMT +4, время: 17:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.