Isomover

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск

Isomover - объект используется для осуществления движения и взаимодействия в изометрической карте.

 Isomover обязательно должен быть подобъектом isomap. 

В проекте с картой (isomap) и движущимися по ней объектами (isomover) часто используют economics и eitems потому, что для завершения процессов часто требуется применить предмет или ресурс.

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

Основные параметры

  • Положение (x,y) - рекомендуется выносить isomover-объекты за пределы карты. Иначе, если объект должен появляться не сразу, то он будет просто стоять без движения
  • Память - всегда должно быть значение 1, обязательное условие корректной работы. Это позволяет объекту двигаться последовательно, не инициализируясь после каждого движения в исходной точке
  • тип ребра min (edge_t_min) - перемещаться по ребрам не ниже заданного, -1 не проверять
  • тип ребра max (edge_t_max) - перемещаться по ребрам не выше заданного, -1 не проверять. Типы ребер задаются в isomap
  • Старт (start) - точка старта, выбирается из списка точек Isomap
  • Финиш (finish) - точка финиша, выбирается из списка точек Isomap
  • Скорость (макс) (vel_max) - максимальная скорость, с которой передвигается объект Isomover
  • Скорость (vel) - не использовать, вычисляется по формуле автоматически, позже будет скрыто. V = Vmax*(k+(1-k)*(P/Pmax))
  • Жизнь (макс) (pow_max) - максимальная жизнь
  • Жизнь (pow) - текущая жизнь, высчитывается по формуле автоматически
  • Сохранять жизнь в опции (powsave) - если да, то объекты сцены сохранят уровень жизни при выходе со сцены и возвращении на нее
  • Коэффициент скорости (speed_k) - коэффициент k в формуле расчета скорости. Чтобы скорость не зависела от значения жизни - указываем speed_k = 1
  • Менять угол (fixangle) - изменение угла для предания плавности смены графики при дугообразном перемещении объекта. С появлением 3D-объектов больше не используется
  • Тип (mtype) - объекты можно разделять на типы (люди, монстры, звери и т.д.). Взаимодействие происходит между объектами разных типов, настраивается в добавляемых параметрах
  • Радиус (mradius) - значения радиуса. Попадание изомувера другого типа в этот радиус позволит начать взаимодействие.
  • Цель при действии (mtarget) - мувер может быть целью взаимодействия пока сам действует
  • Запретить действие (disact) - мувер не сможет перейти из acting_wait в acting
  • Время появления (appear_time) - время в миллисекундах появления и исчезания изомувера (длительность перехода по alpha)
  • Время провала (fail_time) - длительность анимации смерти объекта, по его окончанию произойдет переход в состояние disappear
  • Время паузы (pause_time) - длительность "заморозки" объекта
  • Предмет паузы (pause_item) - предмет для включения паузы
  • Прибавка паузы (pause_add) - если изомувер уже на паузе, по состоянию pause_add продлевает паузу на заданное значение ms
  • fail при 0 жизни (zerofail) - 1- при нулевом уровне жизни изомувер перейдет в fail, 0 - останется жив
  • Не пересчитывать маршрут (softrecalc) - 1- при отключении ребер графа не произойдет пересчета маршрута, 0 - маршрут будет пересчитан
  • Реагировать на (tapreact) - 1- на тап, 0- на клик
  • Дорожное движение (trafficcheck) - 1 - проверять столкновения, 0 - нет
  • использовать бонусы ко времени (useTimeItems) - флаг, будет ли изомувер использовать бонусы от амулетов на ускорение времени взаимодействия (настраивается в экономике). 1 - да, 0 - нет.


Дополнительные параметры

Isomover1.png
  • Графический ресурс:
    • вверх (res0) - графический ресурс движения вверх
    • вверх/вправо (res1) - графический ресурс движения вверх/вправо
    • вправо (res2) - графический ресурс движения вправо
    • вниз/вправо (res3) - графический ресурс движения вниз/вправо
    • вниз (res4) - графический ресурс движения вниз
    • вниз/влево (res5) - графический ресурс движения вниз/влево
    • влево (res6) - графический ресурс движения влево
    • вверх/влево (res7) - графический ресурс движения вверх/влево. Достаточно указать первые пять ресурсов, а остальные редактор отобразит автоматически симметрично
    • деятельность (resa) - графический ресурс для состояния acting и acting_wait
    • рисовать действие поверх (resaover) - 1 - поверх, 0 - подменять ресурс. Применяем, если, например, анимацию нужно отобразить поверх изомувера.
    • иконка персонажа (char_ico) - иконка, которая будет находится сверху над персонажем. Изменение масштаба во время игры не влияет на масштаб иконки. Рекомендуется создавать ее с пивотом у нижней границы, тогда при масштабировании не будет образовываться зазор между иконкой и графикой объекта
    • смещение иконки персонажа (char_ico_shift) - смещение иконки по вертикали
    • рисовать при действии (resad) - 1- мувер рисуется при состоянии acting, 0- не рисуется
    • провал (resf) - графический ресурс состояния fail. Может быть картинкой или анимацией
    • пауза (resp) - графический ресурс состояния pause
    • рисовать паузу поверх (respover) - 1 - поверх, 0 - подменять ресурс.
    • восстановление жизни (resheal) - графический ресурс восстановления жизни
    • нашлепка при критическом уровне (reslow) - Графический ресурс нашлепки при критическом уровне здоровья
  • 3D ресурс
    • модель (mdl) - трехмерный ресурс для отображения объекта
    • scale x (mdlSx) - масштаб по оси x
    • scale y (mdlSy) - масштаб по оси y
    • scale z (mdlSz) - масштаб по оси z
  • Звуки
    • всплывание подложки (snd_panel) - звук показывающейся подложки
    • исчезание подложки (snd_panel_hide) - звук прячущейся подложки
    • переход в acting (snd_to_acting) - звук перехода в состояние acting
    • применение предмета (snd_item_used) - звук применение предмета при взаимодействии
    • предмет при паузе (snd_item_pause) - звук применение предмета при паузе
    • конец паузы (snd_pause_end) - звук при окончании паузы
    • фейл взаимодействия (snd_fail) - звук при переходе в fail
    • успех взаимодействия (snd_success) - звук при переходе в win
    • клик (snd_click) - звук при клике
  • Коэффициент скорости
    • вертикальное (speed_0) - на этот коэффициент умножается скорость при вертикальном движении
    • диагональное (speed_1) - на этот коэффициент умножается скорость при диагональном движении
    • горизонтальное (speed_2) - на этот коэффициент умножается скорость при горизонтальном движении

Обычно горизонтальный коэффициент равен 1.00, чуть меньше диагональный и еще меньше вертикальный. Это необходимо для создания реалистичности движения относительно перспективы. То есть объекты, двигаясь вверх, как бы отдаляются от нас в глубь, поэтому по экрану они движутся медленней

Isomover2.png
  • Таймер:
    • подложка (digBg) - фон для цифр таймера
    • цифры (digNorm) - набор из 10-и цифр в виде ресурса анимации (клипа)
    • двоеточие (colNorm) - графический ресурс двоеточия
    • dx (dx) - смещение таймера по оси x относительно пивота изомувера
    • dy (dy) - смещение таймера по оси y относительно пивота изомувера
    • dx между цифрами (digShift) - расстояние между цифрами таймера
    • dx от (colShift) - отступы числовых разрядов влево и вправо от двоеточия
    • жизнь (objlife) - здесь выбирается объект типа прогресс_бар для отображения шкалы уровня жизни. Progress_bar создается отдельным объектом

Таймер позволяет отобразить время до окончания взаимодействия объектов. Например "корабль" прибыл в "порт" и начал отгружать груз. С помощью числового таймера или progress_bar можно увидеть через сколько закончится отгрузка. На рисунке справа показано взаимодействие двух объектов с изображение шкалы жизни одного из объектов и времени до конца взаимодействия.

  • окно предмета:
    • паспорт(wndPassport) - текстовый id, в котором в word лежит текст - название, в icon1 - графика изомувера для окна использования айтем

Паспорт из этой группы используется в случаях открытия окна использования айтема для паузы или восстановления здоровья.

    • (текст) название айтема(wndItemName) - текстовый объект, в который вкладывается название айтема
    • (текст) текст айтема(wndItemText) - куда кладем описание айтема
    • иконка айтема(wndItemIcon) - иконка айтема
    • название взаимодействия(wndActingName) - куда кладем word и паспорта
    • превью взаимодействия(wndActingPreview) - паспорт или txtID из взаимодействия
    • (каунтер) есть предмета(wndCntHave) - сколько есть нужного айтема
    • (каунтер) нужно предмета(wndCntNeed) - нужно предмета
    • (каутер) цена res1(wndCntRes1) - цена предмета res1
    • (каутер) цена res2(wndCntRes2) - цена предмета res2
    • само окно(wndWnd) - должно иметь состояние show
  • Преследование
    • тип (chasetype) - тип объекта, который можно преследовать
    • радиус (chaseradius) - если объект указанного типа окажется в этом радиусе, то начнется преследование (например полицейская погоня)
  • Дорожное движение
    • радиус (stopradius) - объекты, которые двигались по одному ребру, останавливаются на расстоянии этого радиуса (необходимо для препятствия наслоений объектов на дороге, железнодорожных путях)
  • восстановление жизни:
    • критический уровень (pow_min) - Критический уровень жизни
    • предмет (pow_item) - Предмет восстановления
    • время (pow_time) - Время восстановления жизни
  • ускорение взаимодействия:
    • коэффициент (boost_coef) - Коэффициент ускорения взаимодействия.
    • время (boost_time) - Какое время (в миллисекундах) действует ускорение.
  • курсор (curs) - Графический ресурс курсора текущего и всех дочерних объектов
  • прокликиваемая (passClk) - Если 1, то картинка прозрачна для клика мышкой (пропускает объектам под ней). Если 2, то картинка сама обрабатывает клик, но и пропускает его дальше" regexp="нет=0, да=1, обработать и пропустить=2
  • группа (gr) - Группа, в которую входит текущий объект
  • eitems (eitems) - Объект типа eitems


Добавляемые параметры

Isomover9.png

+.png Взаимодействие с другими объектами:

  • тип (mtype) - тип объекта с которым по настроенному ниже сценарию будет происходить взаимодействие, -1 для любого типа
  • min жизнь (minlife) - минимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"
  • max жизнь (maxlife) - максимальное значение жизни для начала взаимодействия, -1 не проверять. Служит для проверки жизни при взаимодействии и с "тип", и с "тип актив"
  • тип актив (mtype_a) - тип мувера, который активирует взаимодействие, если данный в процессе подготовки
  • анимация (res_a) - анимация взаимодействия, например боя, разгрузки, разговора. Перетаскивается мышкой из редактора ресурсов
  • старт тип (stype) - тип старта взаимодействия
    • 0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту
    • 1 - автоматический переход в состояние acting
    • 2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов
    • 3 - переход по значению жизни
  • старт таймер (stimer) - время, за которое нужно активировать взаимодействие тапом
  • старт изм.жизни (slife) - скорость изменения жизни до активации взаимодействия тапом
  • старт изм.жизни другого (slife_o) - скорость изменения жизни враг до активации взаимодействия тапом
  • предмет (item) - предмет, необходимый для запуска активности. Актуально, когда имеется объект economics
  • иконка (ico) - иконка активности
  • смещение иконки (ico_shift) - смещение иконки активности по вертикали
  • актив тип (atype) - тип старта взаимодействия
    • 0 - бесконечное ожидание тапа. Переход в состояние acting не начнется, пока не произойдет тап по объекту
    • 1 - автоматический переход в состояние acting
    • 2 - время, через которое произойдет переход из acting_wait в acting после начала взаимодействия объектов
    • 3 - переход по значению жизни
  • актив таймер (atime) - время, которое длится взаимодействие
  • актив изменение жизни (alife) - скорость изменения жизни текущего объекта (ед/сек) в состоянии active
  • актив изменение жизни другого (alife_o) - скорость изменения жизни другого объекта (ед/сек) в состоянии active
Isomover3.png
  • объект инит (obj) - объект, состояние которого нужно изменить при переходе изомувера в acting_wait
  • состояние инит (st) - новое состояние другого объекта
  • объект старт (obj_s) - объект, состояние которого нужно изменить при переходе изомувера в acting
  • состояние старт (st_s) - новое состояние другого объекта
  • объект фейл (obj_f) - объект, состояние которого нужно изменить при переходе изомувера в состояние fail (проигрыш)
  • состояние фейл (st_f) - новое состояние другого объекта
  • объект успех (obj_w) - объект, состояние которого нужно изменить при переходе изомувера в состояние win (в случае победы)
  • состояние успех (st_w) - новое состояние другого объекта
  • дельта жизнь (deltalife) при успехе взаимодействия изменить значение жизни на эту величину
  • переводить другой в фейл (o_fail) - 1- переводить цель действия в fail, 0- в idle
  • переводить другой в мув (o_move) - при неудачном действии 1- переводить цель действия в move, 0- в idle
  • можно ускорить (canspeed) - 1- действие можно ускорить. От этого параметра зависит, какое событие будет вызываться по клику на объект в состоянии acting
  • звук ожидания (snd_wait) - звук, который будет воспроизводиться в состоянии acting_wait
  • звук действия (snd_act) - звук, который будет воспроизводиться в состоянии acting

Для каждого типа объектов, с которыми взаимодействие возможно, необходимо добавить отдельный параметр "взаимодействие с другими объектами" и настроить его. Объекты инит, старт, фейл и успех вызываются при переходе текущего объекта в соответствующие состояния. Например, это может быть диалоговое окно, предлагающее продолжить взаимодействие, запуск дополнительных индикаторов, фейерверк в случае победы.

  • паспорт(wndPassport) - текстовый id, в котором в word лежит текст - название, в icon1 - графика изомувера для окна использования айтем

Паспорт из этой группы используется в случаях открытия окна использования айтема для взаимодействия.

+.png Клик при простое (nst_idle):

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии idel
  • состояние - новое состояние объекта

+.png Изменить состояние объекта (nst_move), он же клик при движении:

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии move
  • состояние - новое состояние объекта

+.png Клик при паузе (nst_pause):

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии pause (заморозка)
  • состояние - новое состояние объекта

+.png Изменить состояние объекта (nst_aw_n) он же клик при acting_wait, если другие действия не возможны

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting_wait
  • состояние - новое состояние объекта

+.png Изменить состояние объекта (nst_a_1) он же клик при acting, ускорение возможно

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение возможно
  • состояние - новое состояние объекта

+.png Изменить состояние объекта (nst_a_2) он же клик при acting, ускорение НЕвозможно

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии acting и ускорение не возможно
  • состояние - новое состояние объекта

+.png Изменить состояние объекта (nst_beact) он же клик при beeng_acting

  • объект - объект, состояние которого меняется, если изомувер был нажат в состоянии beeng_acting, когда воздействие совершалось над ним другим объектом
  • состояние - новое состояние объекта

+.png Конец движения (nst_finish):

  • объект - объект, состояние которого меняется, если изомувер закончил движение (достиг точки finish)
  • состояние - новое состояние объекта

+.png Отправили в текущую ноду (nst_place):

  • объект - объект, состояние которого меняется, если изомувер направлен в ту же ноду, в которой и находится
  • состояние - новое состояние объекта

+.png Перешел в fail (nst_gopause):

  • объект - объект, состояние которого меняется, если изомувер перешел в fail
  • состояние - новое состояние объекта

+.png Перешел в pause (nst_heal):

  • объект - объект, состояние которого меняется, если изомувер Перешел в pause
  • состояние - новое состояние объекта

+.png Восстановил здоровье (nst_low_time):

  • объект - объект, состояние которого меняется, если изомувер Восстановил здоровье
  • состояние - новое состояние объекта

+.png Здоровье на 0 (nst_pow0) - здоровье снизилось для нуля.

  • объект - объект, состояние которого меняется, если изомувер Восстановил здоровье
  • состояние - новое состояние объекта

+.png Время истекло: изменить состояние объекта (nst_low_time) он же время на исходе: изменить состояние объекта:

  • значение, при котором срабатывает обработчик
  • объект - объект, состояние которого меняется по истечению времени
  • состояние - новое состояние объекта


Состояния

Isomover box.png
  • idle - дефолтное состояние, в которое isomover переходит после всех манипуляций. Недвижимым объектам следует передавать idle, чтобы они появились (нарисовались) на карте. Для движущихся объектов его практически не используют, объект сам рисуется с началом движения. Если обьект был в being_acted, то ему следуюет передать idle перед move_to_smooth, чтобы он сдвинулся с места.
  • acting_wait - состояние, в котором изомувер ожидает взаимодействия с другим обьектом или с пользователем.
  • acting - состояние, в которое изомувер попадает, если встречаются два изомувера, которые могут взаимодействовать друг с другом или принудительная анимация взаимодействия с самим собой.
  • being_acted - в этом состоянии пребывает тот объект, над которым идет действие.
  • move - состояние движения от старта к финишу.
  • move_to_smooth - состояние движения от текущей ноды (или следующей, если объект идет) к финишу. Если обьект уже следует куда-то, и его надо перенаправить, то передаем ему это состояние.
  • appear - показать по альфе за время появления.
  • disappear - скрыть по альфе за время появления.
  • prepare_acting - принудительно перевести изомувер в acting_wait.
  • start_acting - принудительно перевести изомувер в acting.
  • fail - это состояние вызывается, если за время acting пользователь ничего не предпринял. Выполняется обработка взаимодействия в случае провала.
  • win - противоположное предыдущему. Пользователь предпринял действие, выполняется обработка взаимодействия в случае успеха.
  • healing - вылечить изомувер.
  • tap - симуляция тапа по изомуверу.
  • boost - ускорить взаимодействие изомувера.
  • pause - заморозить изомувер.
  • pause_wait - показать окно предмета, вызывающего заморозку.
  • pause_add - продлить заморозку на время, указанное в одноименном параметре (см. выше), если изомувер уже заморожен.

Особенности работы

Isomover6.png
Isomover8.png

Движение объекта типа isomover задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект woman типа isomover. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Движение задается машиной состояний woman_machine.
Для управления циклическим ходом назначим дополнительный параметр ww. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов.
Для того, чтобы изомувер двигался каждый раз к новой точке, необходимо повторно инициализировать его точку финиша. Однако, если мы продолжим указывать ему состояние move для движения, то каждый раз он будет начинать движение с точки старта. Чтобы это исправить воспользуемся состоянием move_to_smooth, которое заставляет двигаться изомувер от текущей ноде к финишу, будто старт и финиш мы все время смещаем на шаг.
Основная логика будет находиться в состоянии circle_moving нашей машины. Надо сделать так, чтобы изомувер переходил в это состояние после движения по каждому из ребер. Для этого зайдем в свойства изомувера, нажмем правой кнопкой мыши и добавим параметр конец движения. У него есть поля объект и свойство. Объект - машина состояний woman_machine, состояние circle_moving этой машины. Таким образом, в конце каждого акта движения изомувер будет запускать состояние, в котором мы будем менять его точку финиша и запускать его движение.
Не забываем, что все операции с переменными должны отделяться скобками, как и сама переменная

Пример

Два изомувера (police_car и werewolf) совершают циклическое движение по определенному маршруту, заданному с помощью машин состояний (car_machine и werewolf_machine соответственно). Когда объекты оказываются в радиусе (достаточном для активации добавляемого параметра "Взаимодействие с другими объектами"), объект police_car начинает взаимодействовать с объектом werewolf. По истечению времени воздействия объект police_car переходит в состояние fail. Если кликнуть на процесс взаимодействия объектов, то объект police_car перейдет в состояние win.

  • Пример:

S:\!MOBILE\!!!EditorGames\Wiki_sample\Isomap.rar