Isomover
Isomover - объект используется для осуществления движения и взаимодействия в изометрической карте.
Isomover обязательно должен быть подобъектом isomap.
В проекте с картой (isomap) и движущимися по ней объектами (isomover) часто используют economics и eitems потому, что для завершения процессов часто требуется применить предмет или ресурс.
Начало движения множества изомуверов сильно нагружает систему, поэтому следует позаботиться, чтобы это происходило не в один момент времени. По возможности добавляйте небольшую и различную паузу каждому изомуверу перед стартом.
Содержание
Общие параметры
- Положение (x,y) - рекомендуется выносить isomover-объекты за пределы карты. Иначе, если объект должен появляться не сразу, то он будет просто стоять без движения
- Память - всегда должно быть значение 1, обязательное условие корректной работы. Это позволяет объекту двигаться последовательно, не инициализируясь после каждого движения в исходной точке
Основные параметры
- Старт (start) - точка старта, выбирается из списка точек Isomap
- Финиш (finish) - точка финиша, выбирается из списка точек Isomap
- Скорость (макс) (vel_max) - максимальная скорость, с которой передвигается объект Isomover
- Скорость (vel) - не использовать, вычисляется по формуле автоматически, позже будет скрыто.
- Жизнь (макс) (pow_max) - максимальная жизнь
- Жизнь (pow) - текущая жизнь
- Сохранять жизнь в опции (powsave) - если да, то объекты сцены сохранят уровень жизни при выходе со сцены и возвращении на нее
- Коэффициент скорости (speed_k) - коэффициент в формуле расчета скорости
- Менять угол (fixangle) - изменение угла
- Тип (mtype) - объекты можно разделять на типы (люди, монстры, звери). Взаимодействие происходит между объектами разных типов, настраивается в добавляемых параметрах
- Радиус (mradius) - значения радиуса. Попадание изомувера другого типа в этот радиус позволит начать взаимодействие.
- Время появления (appear_time) - время в миллисекундах появления объекта (длительность перехода по alpha)
- Время провала (fail_time) - длительность анимации смерти объекта
- Время паузы (pause_time) - длительность "заморозки" объекта
- Графический ресурс:
- вверх (res0) - графический ресурс движения вверх
- вверх/вправо (res1) - графический ресурс движения вверх/вправо
- вправо (res2) - графический ресурс движения вправо
- вниз/вправо (res3) - графический ресурс движения вниз/вправо
- вниз (res4) - графический ресурс движения вниз
- вниз/влево (res5) - графический ресурс движения вниз/влево
- влево (res6) - графический ресурс движения влево
- вверх/влево (res7) - графический ресурс движения вверх/влево. Достаточно указать первые пять ресурсов, а остальные редактор отобразит автоматически симметрично
- иконка персонажа (char_ico) - иконка, которая будет находится сверху над персонажем. Изменение масштаба во время игры не влияет на масштаб иконки. Рекомендуется создавать ее с пивотом у нижней границы, тогда при масштабировании не будет образовываться зазор между иконкой и графикой объекта.
- Коэффициент скорости
- вертикальное (speed_0) - на этот коэффициент умножается скорость при вертикальном движении
- диагональное (speed_1) - на этот коэффициент умножается скорость при диагональном движении
- горизонтальное (speed_2) - на этот коэффициент умножается скорость при горизонтальном движении
Обычно горизонтальный коэффициент равен 1.00, чуть меньше диагональный и еще меньше вертикальный. Это необходимо для создания реалистичности движения относительно перспективы. То есть объекты, двигаясь вверх, как бы отдаляются от нас в глубь, поэтому по экрану они движутся медленней
- Таймер:
- подложка (digBg) - фон для цифр таймера
- цифры (digNorm) - набор из 10-и цифр в виде ресурса анимации (клипа)
- двоеточие (colNorm) - графический ресурс двоеточия
- dx (dx) - смещение таймера по оси x относительно пивота изомувера
- dy (dy) - смещение таймера по оси y относительно пивота изомувера
- dx между цифрами (digShift) - расстояние между цифрами таймера
- dx от (colShift) - отступы числовых разрядов влево и вправо от двоеточия
- жизнь (objlife) - здесь выбирается объект типа прогресс_бар для отображения шкалы уровня жизни. Progress_bar создается отдельным объектом
Таймер позволяет отобразить время до окончания взаимодействия объектов. Например "корабль" прибыл в "порт" и начал отгружать груз. С помощью числового таймера или progress_bar можно увидеть через сколько закончится отгрузка. На рисунке справа показано взаимодействие двух объектов с изображение шкалы жизни одного из объектов и времени до конца взаимодействия.
- Преследование
- тип (chasetype) - тип объекта, который можно преследовать
- радиус (chaseradius) - если объект указанного типа окажется в этом радиусе, то начнется преследование (например полицейская погоня)
- Дорожное движение
- радиус (stopradius) - объекты, которые двигались по одному ребру, останавливаются на расстоянии этого радиуса (необходимо для препятствия наслоений объектов на дороге, железнодорожных путях)
Добавляемые параметры
Взаимодействие с другими объектами:
- тип (mtype) - тип объекта с которым по настроенному ниже сценарию будет происходить взаимодействие, -1 для любого типа
- min жизнь (minlife) - минимальное значение жизни для начала взаимодействия, -1 не проверять
- max жизнь (maxlife) - минимальное значение жизни для начала взаимодействия, -1 не проверять
- анимация (res_a) - анимация взаимодействия, например боя, разгрузки, разговора. Перетаскивается мышкой из редактора ресурсов
- старт тип (stype) - тип старта взаимодействия
- 0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту
- 1 - автоматический переход в состояние acting
- 2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов
- 3 - переход по значению жизни
- старт таймер (stimer) - время, за которое нужно активировать взаимодействие тапом
- предмет (item) - предмет, необходимый для запуска активности. Актуально, когда имеется объект economics
- иконка (ico) - иконка активности
- смещение иконки (ico_shift) - смещение иконки активности по вертикали
- актив таймер (atime) - время, которое длится взаимодействие
- актив изменение жизни (alife) - скорость изменения жизни текущего объекта (ед/сек) в состоянии active
- актив изменение жизни другого (alife_o) - скорость изменения жизни другого объекта (ед/сек) в состоянии active
- объект инит (obj) - объект, состояние которого нужно изменить при переходе текущего объекта в acting_wait
- состояние инит (st) - новое состояние другого объекта
- объект старт (obj_s) - объект, состояние которого нужно изменить при переходе текущего объекта в acting
- состояние старт (st_s) - новое состояние другого объекта
- объект фейл (obj_f) - объект, состояние которого нужно изменить при переходе текущего объекта в состояние fail (проигрыш)
- состояние фейл (st_f) - новое состояние другого объекта
- объект успех (obj_w) - объект, состояние которого нужно изменить при переходе текущего объекта в состояние win (в случае победы)
- состояние успех (st_w) - новое состояние другого объекта
Для каждого типа объектов, с которыми взаимодействие возможно, необходимо добавить отдельный параметр "взаимодействие с другими объектами" и настроить его. Объекты инит, старт, фейл и успех вызываются при переходе текущего объекта в соответствующие состояния. Например, это может быть диалоговое окно, предлагающее продолжить взаимодействие, запуск дополнительных индикаторов, фейерверк в случае победы.
- объект - объект, состояние которого меняется, если наш объект был нажат в состоянии idel
- состояние - новое состояние объекта
Изменить состояние объекта (nst_move), он же клик при движении:
- объект - объект, состояние которого меняется, если наш объект был нажат в состоянии move
- состояние - новое состояние объекта
- объект - объект, состояние которого меняется, если наш объект был нажат в состоянии pause (заморозка)
- состояние - новое состояние объекта
- объект -
- состояние -
Состояния
idle - дефолтное состояние, в которое isomover переходит после всех манипуляций. Недвижимым объектам следует передавать idle, чтобы они появились (нарисовались) на карте. Для движущихся объектов его практически не используют, объект сам рисуется с началом движения.
acting_wait - первое состояние взаимодействия (запускается первый таймер, анимация взаимодействия и ожидается старт).
acting - второе состояние взаимодействия (вызывается после применения предмета или клика, запускает второй таймер).
being_acted - в этом состоянии пребывает тот объект, над которым идет действие. Объект в этом состоянии невидим.
move - состояние движения от старта к финишу.
move_to_smooth - состояние движения от текущей ноды (или следующей, если объект идет) к финишу.
appear - показать по альфе за время появления.
disappear - скрыть по альфе за время появления.
prepare_acting - вызвать взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.
start_acting - продолжить взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.
Особенности работы
Движение объекта типа Isomever задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными.