Avoider — различия между версиями
Denisov (обсуждение | вклад) (→Основные параметры) |
Denisov (обсуждение | вклад) (→Основные параметры) |
||
Строка 25: | Строка 25: | ||
'''Время пропадания объекта по альфе''' ''(fading_time)'' - время пропадания объекта с полосы по альфе от 1 до 0, в мс. | '''Время пропадания объекта по альфе''' ''(fading_time)'' - время пропадания объекта с полосы по альфе от 1 до 0, в мс. | ||
− | Добавляемые параметры | + | == Добавляемые параметры == |
− | Полоса (stripe) - полоса, на которой может располагаться персонаж. На ней также движутся объекты на встречу персонажу. В ней необходимо указать координаты самой полосы и персонажа на ней, отсчет координат от левого верхнего угла, единицы измерения - проценты. | + | '''Полоса''' ''(stripe)'' - полоса, на которой может располагаться персонаж. На ней также движутся объекты на встречу персонажу. В ней необходимо указать координаты самой полосы и персонажа на ней, отсчет координат от левого верхнего угла, единицы измерения - проценты. |
− | координата Х начала полосы (start_x) - координата Х начала полосы (задается в % от левой границы эвойдера) | + | *'''координата Х начала полосы''' ''(start_x)'' - координата Х начала полосы (задается в % от левой границы эвойдера) |
− | координата Y начала полосы (start_y) - координата Y начала полосы (задается в % от верхней границы эвойдера) | + | *'''координата Y начала полосы''' ''(start_y)'' - координата Y начала полосы (задается в % от верхней границы эвойдера) |
− | координата Х конца полосы (end_x) - координата Х конца полосы (задается в % от левой границы эвойдера) | + | *'''координата Х конца полосы''' ''(end_x)'' - координата Х конца полосы (задается в % от левой границы эвойдера) |
− | координата Y конца полосы (end_y) - координата Y конца полосы (задается в % от верхней границы эвойдера) | + | *'''координата Y конца полосы''' ''(end_y)'' - координата Y конца полосы (задается в % от верхней границы эвойдера) |
− | графика персонажа (personage_image) - графический ресурс персонажа, перетаскивается мышкой из базы ресурсов. Не требуется заполнять, если указан персонаж в основных параметрах. Графику персонажа для разных полос можно указывать разной. | + | *'''графика персонажа''' ''(personage_image)'' - графический ресурс персонажа, перетаскивается мышкой из базы ресурсов. Не требуется заполнять, если указан персонаж в основных параметрах. Графику персонажа для разных полос можно указывать разной. |
− | положение персонажа на полосе (personage_position) - задается в % длины полосы от верхней ее точки | + | *'''положение персонажа на полосе''' ''(personage_position)'' - задается в % длины полосы от верхней ее точки |
Объект:препятствие (track_object_obstacle) - препятствие, | Объект:препятствие (track_object_obstacle) - препятствие, |
Версия 07:26, 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) Идентификатор - уникальная строка, которой будет задаваться данный объект в файле уровней (например, “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% соответственно.