Avoider — различия между версиями
Denisov (обсуждение | вклад) (→Добавляемые параметры) |
Denisov (обсуждение | вклад) (→Пример реализации:) |
||
Строка 101: | Строка 101: | ||
==Пример реализации:== | ==Пример реализации:== | ||
+ | [[Avoider_article_pic1.png]] | ||
Графика дороги и прилегающих к ней объектов задается отдельно в виде бесконечно движущихся машин состояний. Для простоты управления достаточно создать два объекта, каждый из которых заполнить фрагментами дорожного полотна, разделительными полосами, бордюрами, травой и деревьями. Два эти объекта поочередно будут сменять друг друга, создавая эффект непрерывного движения. | Графика дороги и прилегающих к ней объектов задается отдельно в виде бесконечно движущихся машин состояний. Для простоты управления достаточно создать два объекта, каждый из которых заполнить фрагментами дорожного полотна, разделительными полосами, бордюрами, травой и деревьями. Два эти объекта поочередно будут сменять друг друга, создавая эффект непрерывного движения. |
Версия 07:40, 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.xml. Вертикальные полосы на дороге отделяются просто запятыми, а горизонтальные - переносом строки. На рисунке изображен avoider с 3-мя полосами движения. Если какая-то часть полосы пустая, то в этом месте указывается “0” (ноль).
Чтобы создать разнообразие появления объектов, они группируются внутри тегов <track></track>, у которого есть атрибут weight (вес). Значение атрибута weight определяет вероятность появления определенного трека. Т.е., если значения у всех треков одинаковы, то и вероятность равна, а если есть три трека, у одного weight=2, а у остальных weight=1, то вероятность появления треков 50%, 25% и 25% соответственно.