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

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
(Пример реализации:)
(Пример реализации:)
Строка 111: Строка 111:
 
[[Файл:Avoider_article_pic2.png|thumb|left|300|Файл уровней]]
 
[[Файл:Avoider_article_pic2.png|thumb|left|300|Файл уровней]]
  
[[Файл:Avoider_article_pic3.png|thumb|left|300|Идентификаторы в настройках эвойдера]]
+
[[Файл:Avoider_article_pic3.png|thumb|right|300|Идентификаторы в настройках эвойдера]]
  
 
Пример заполненного файла уровней изображен на скрине. Корневым тегом является <levels></levels> внутри которого может находится несколько пар тегов для каждого уровня <level></level>, имеющих уникальный id.
 
Пример заполненного файла уровней изображен на скрине. Корневым тегом является <levels></levels> внутри которого может находится несколько пар тегов для каждого уровня <level></level>, имеющих уникальный id.

Версия 08:06, 1 сентября 2016

Avoider - встроенный объект редактора, который реализует механику бесконечного движения персонажа по нескольким полосам дороги, избегающего препятствий на своём пути.

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

Размер - обязательный параметр высоты и ширины объекта

  • w (w) - ширина в px
  • h (h) - высота в px

Длина свайпа (swipe_length) - на сколько пикселов следует перетянуть указатель мыши (или палец на сенсорном экране), чтобы персонаж переместился на соседнюю полосу. Свайп срабатывает в любом месте экрана.

Персонаж (personage) - машина, представляющая персонаж. Выбирается из списка объектов.

Расстояние между объектами на полосе (track_rows_distance) - расстояние в пикселах между соседними полосами.

Базовая скорость (base_speed) - скорость в px/sec движения всех объектов относительно персонажа.

Скорость перемещения между полосами (personage_speed) - скорость перемещения персонажа в px/sec между соседними полосами.

Флаер столкновения с препятствием (explosion_object) - флаер, запускаемый при столкновении с препятствием.

Имя состояния запуска взрыва (explosion_start_state) - состояние, передаваемое флаеру при столкновении с препятствием, beg по умолчанию.

Имя состояния остановки взрыва (explosion_stop_state) - состояние, передаваемое флаеру для его остановки, end по умолчанию.

Продолжительность взрыва (explosion_time) - продолжительность взрыва в мс.

Время пропадания объекта по альфе (fading_time) - время пропадания объекта с полосы по альфе от 1 до 0, в мс.

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

Полоса (stripe) - полоса, на которой может располагаться персонаж. На ней также движутся объекты на встречу персонажу. В ней необходимо указать координаты самой полосы и персонажа на ней, отсчет координат от левого верхнего угла, единицы измерения - проценты.

  • координата Х начала полосы (start_x) - координата Х начала полосы (задается в % от левой границы эвойдера)
  • координата Y начала полосы (start_y) - координата Y начала полосы (задается в % от верхней границы эвойдера)
  • координата Х конца полосы (end_x) - координата Х конца полосы (задается в % от левой границы эвойдера)
  • координата Y конца полосы (end_y) - координата Y конца полосы (задается в % от верхней границы эвойдера)
  • графика персонажа (personage_image) - графический ресурс персонажа, перетаскивается мышкой из базы ресурсов. Не требуется заполнять, если указан персонаж в основных параметрах. Графику персонажа для разных полос можно указывать разной.
  • положение персонажа на полосе (personage_position) - задается в % длины полосы от верхней ее точки

Объект:препятствие (track_object_obstacle) - препятствие,

  • Идентификатор (obj_id) - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “*” или “obstacle_1”).
  • Графика (image) - ссылка на изображение из ресурсов для данного объекта.

Объект: монета (track_object_coin)

  • Идентификатор (obj_id) - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “coin_1”).
  • Графика (image) - ссылка на изображение из ресурсов для данного объекта.

Объект: изменение скорости (track_object_change_speed)

  • Идентификатор (obj_id) - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “speed_up_1”).
  • Графика (image) - ссылка на изображение из ресурсов для данного объекта.
  • На сколько процентов изменить скорость (factor) - задает, на сколько процентов изменяется скорость относительно начальной. В качестве начальной скорости используется базовая скорость текущего уровня, если задано абсолютное изменение скорости, либо текущая скорость, если задано относительно изменение скорости.
  • Тип изменения (absolute) - задает, будет ли применено абсолютное или относительное изменение скорости.
  • Время, на которое применяется изменение (apply_time) - время в миллисекундах, по истечении которого будет возвращена предыдущая скорость. Если выставлено значение “-1”, то изменение применяется навсегда.

Объект: неуязвимость (track_object_invulnerability)

  • Идентификатор (obj_id) - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “invulnerability_1”).
  • Графика (image) - ссылка на изображение из ресурсов для данного объекта.
  • Время, на которое применяется изменение (apply_time) - время в миллисекундах, на которое объект приобретает неуязвимость. Если выставлено значение “-1”, то изменение применяется навсегда.

Слушатель расстояния (progress_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (row_passed_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж проходит очередную строку объектов.

Слушатель времени (time_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (seconds_elapsed_state_name) - имя состояния объекта слушателя, которое вызывается, когда проходит каждая следующая секунда.

Слушатель препятствий (obstacle_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (met_obstacle_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж сталкивается с препятствием.

Слушатель изменения скорости (change_speed_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (change_speed_state_name) -- имя состояния объекта слушателя, которое вызывается, когда любым способом изменяется скорость движения (то ли за счет перехода на следующий уровень, то ли за счет пойманного бонуса скорости).
  • Параметр (new_speed_parameter_name) - имя параметра объекта слушателя, в который записывается новое значение скорости.

Слушатель монет (coin_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (met_coin_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж подбирает монету.

Слушатель неуязвимости (invulnerability_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (met_invulnerability_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж ловит неуязвимость.

Слушатель потери неуязвимости (lost_invulnerability_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (lost_invulnerability_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж теряет неуязвимость.

Слушатель конца игры (game_over_listeners)

  • Объект слушателя (obj) - ссылка на объект слушателя.
  • Состояние (game_over_state_name) - имя состояния объекта слушателя, которое вызывается, когда персонаж сталкивается с препятствием, и игра заканчивается.

Звуки (sounds) - указывается id звукового файла в базе ресурсов

  • Столкновение с препятствием (obstacle_sound) - звук, который проигрывается, когда персонаж сталкивается с препятствием.
  • Смена полосы (change_stripe_sound) - звук, который проигрывается, когда персонаж переезжает с одной полосы на другую.
  • Собирание монеты (coin_sound) - звук, который проигрывается, когда персонаж подбирает монету.
  • Изменение скорости (change_speed_sound) - звук, который проигрывается, когда изменяется скорость.
  • Неуязвимость (invulnerability_sound) - звук, который проигрывается, когда персонаж приобретает неуязвимость.
  • Потеря неуязвимости (lost_invulnerability_sound) - звук, который проигрывается, когда персонаж теряет неуязвимость.
  • Конец игры (gameover_sound) - звук, который проигрывается, когда персонаж сталкивается с препятствием, и игра прекращается.
  • Изменение уровня (change_level_sound) - звук, который проигрывается, когда игра переходит на следующий уровень.


Пример реализации:

Пример реализации эвойдера

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

Базовая скорость движения объектов эвойдера и объектов фона должна совпадать. Также стоит позаботится об изменении скорости объектов фона, когда персонаж наезжает на объект:ускорение и возврат ее в начальное значение.

Расположение препятствий,монет, объектов для ускорения и неуязвимости задается в файле уровней levels.xml, который необходимо разместить в папке, где находится редактор.

Файл уровней
Идентификаторы в настройках эвойдера

Пример заполненного файла уровней изображен на скрине. Корневым тегом является <levels></levels> внутри которого может находится несколько пар тегов для каждого уровня <level></level>, имеющих уникальный id.

Чтобы создать разнообразие появления объектов, они группируются внутри тегов <track></track>, у которого есть атрибут weight (вес). Треков внутри уровня может быть любое количество. Значение атрибута weight определяет вероятность появления определенного трека. То есть, если значения веса у всех треков одинаковы, то и вероятность равна, а если есть три трека, у одного weight=2, а у остальных weight=1, то вероятность появления треков 50%, 25% и 25% соответственно.

Объекты эвойдера обладают полем “идентификатор”, где необходимо указать уникальный символ или слово. Далее именно этот идентификатор вносится в levels.xml. Вертикальные полосы на дороге отделяются просто запятыми, а горизонтальные - переносом строки. На рисунке изображен avoider с 3-мя полосами движения. Если какая-то часть полосы пустая, то в этом месте указывается “0” (ноль).