Avoider

Материал из wiki.appsalutecreator.com
Версия от 07:23, 1 сентября 2016; Denisov (обсуждение | вклад) (Основные параметры)
Перейти к: навигация, поиск

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) Идентификатор - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “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.xml. Вертикальные полосы на дороге отделяются просто запятыми, а горизонтальные - переносом строки. На рисунке изображен avoider с 3-мя полосами движения. Если какая-то часть полосы пустая, то в этом месте указывается “0” (ноль).

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