Isomover — различия между версиями

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Особенности работы)
(Особенности работы)
Строка 150: Строка 150:
 
[[Файл:Isomover6.png|left|300px]]
 
[[Файл:Isomover6.png|left|300px]]
 
[[Файл:Isomover7.png]]
 
[[Файл:Isomover7.png]]
Движение объекта типа ''Isomever'' задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект '''woman''' типа ''isomover''. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Вся логика движения изомувера вынесена в машину состояний ''woman_machine''. Здесь задается начальное состояние ''new_state'', в котором объект будет находиться до появления на карте в течение 1000 мс (1 сек). Поскольку изомуверы лучше размещать за пределами карты, то все эти 1000 мс для нас этот объект будет не видим на карте. Через секунду произойдет переход в move_init. Наш объект появится в точке b1 и перейдет в b2 со скоростью, указанной в свойствах. Для управления циклическим ходом назначим ему дополнительный параметр ''ww'', который будет изначально равен 1. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов. В конце передадим изомуверу состояние move:<br>
+
Движение объекта типа ''Isomever'' задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект '''woman''' типа ''isomover''. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Вся логика движения изомувера вынесена в машину состояний ''woman_machine''. Здесь задается начальное состояние ''new_state'', в котором объект будет находиться до появления на карте в течение 1000 мс (1 сек). Поскольку изомуверы лучше размещать за пределами карты, то все эти 1000 мс для нас этот объект будет не видим на карте. Через секунду произойдет переход в move_init. Наш объект появится в точке b1 и перейдет в b2 со скоростью, указанной в свойствах. Для управления циклическим ходом назначим ему дополнительный параметр ''ww'', который будет изначально равен 1. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов. В конце передадим изомуверу состояние move:<br><br>
 
<set obj="woman" par="start" val_node="b1"/><br>
 
<set obj="woman" par="start" val_node="b1"/><br>
 
<set obj="woman" par="finish" val_node="b2"/><br>
 
<set obj="woman" par="finish" val_node="b2"/><br>

Версия 12:11, 30 ноября 2015

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

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

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

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

Общие параметры

  • Положение (x,y) - рекомендуется выносить isomover-объекты за пределы карты. Иначе, если объект должен появляться не сразу, то он будет просто стоять без движения
  • Память - всегда должно быть значение 1, обязательное условие корректной работы. Это позволяет объекту двигаться последовательно, не инициализируясь после каждого движения в исходной точке

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

Isomover1.png
  • Старт (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, чуть меньше диагональный и еще меньше вертикальный. Это необходимо для создания реалистичности движения относительно перспективы. То есть объекты, двигаясь вверх, как бы отдаляются от нас в глубь, поэтому по экрану они движутся медленней

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

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

  • Преследование
    • тип (chasetype) - тип объекта, который можно преследовать
    • радиус (chaseradius) - если объект указанного типа окажется в этом радиусе, то начнется преследование (например полицейская погоня)
  • Дорожное движение
    • радиус (stopradius) - объекты, которые двигались по одному ребру, останавливаются на расстоянии этого радиуса (необходимо для препятствия наслоений объектов на дороге, железнодорожных путях)



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

Isomover4.png


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

  • тип (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
Isomover3.png
  • объект инит (obj) - объект, состояние которого нужно изменить при переходе текущего объекта в acting_wait
  • состояние инит (st) - новое состояние другого объекта
  • объект старт (obj_s) - объект, состояние которого нужно изменить при переходе текущего объекта в acting
  • состояние старт (st_s) - новое состояние другого объекта
  • объект фейл (obj_f) - объект, состояние которого нужно изменить при переходе текущего объекта в состояние fail (проигрыш)
  • состояние фейл (st_f) - новое состояние другого объекта
  • объект успех (obj_w) - объект, состояние которого нужно изменить при переходе текущего объекта в состояние win (в случае победы)
  • состояние успех (st_w) - новое состояние другого объекта

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

+.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):

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

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

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

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

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

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

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

Состояния

Isomover box.png

idle - дефолтное состояние, в которое isomover переходит после всех манипуляций. Недвижимым объектам следует передавать idle, чтобы они появились (нарисовались) на карте. Для движущихся объектов его практически не используют, объект сам рисуется с началом движения.
acting_wait - первое состояние взаимодействия (запускается первый таймер, анимация взаимодействия и ожидается старт).
acting - второе состояние взаимодействия (вызывается после применения предмета или клика, запускает второй таймер).
being_acted - в этом состоянии пребывает тот объект, над которым идет действие. Объект в этом состоянии невидим.
move - состояние движения от старта к финишу.
move_to_smooth - состояние движения от текущей ноды (или следующей, если объект идет) к финишу.
appear - показать по альфе за время появления.
disappear - скрыть по альфе за время появления.
prepare_acting - вызвать взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.
start_acting - продолжить взаимодействие без оппонента. Перед вызовом нужно в поле param записать номер взаимодействия по порядку.

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

Isomover5.png
Isomover8.png
Isomover6.png

Isomover7.png Движение объекта типа Isomever задается с помощью отдельной машины состояний через которую происходит управление состояниями move, acting и остальными. Рассмотрим на конкретном примере. У нас есть объект woman типа isomover. Необходимо, чтобы наш изомувер начал движение с точки b1 и дальше начал двигаться бесконечно по кольцу b2-b3-b4-b5. Вся логика движения изомувера вынесена в машину состояний woman_machine. Здесь задается начальное состояние new_state, в котором объект будет находиться до появления на карте в течение 1000 мс (1 сек). Поскольку изомуверы лучше размещать за пределами карты, то все эти 1000 мс для нас этот объект будет не видим на карте. Через секунду произойдет переход в move_init. Наш объект появится в точке b1 и перейдет в b2 со скоростью, указанной в свойствах. Для управления циклическим ходом назначим ему дополнительный параметр ww, который будет изначально равен 1. Название параметра должно быть уникально и не совпадать с параметрами игровых объектов. В конце передадим изомуверу состояние move:

<set obj="woman" par="start" val_node="b1"/>
<set obj="woman" par="finish" val_node="b2"/>
<set obj="woman" par="ww" val_node="1"/>
<set obj="woman" st="move"/>