Flyer — различия между версиями
Lkunica (обсуждение | вклад) (→Основные параметры) |
Lkunica (обсуждение | вклад) (→Основные параметры) |
||
Строка 18: | Строка 18: | ||
*'''картинка''' - Служит для рисоания флаера в случае выбора типа флаера "картинки" В поле этого параметра находится имя графического ресурса (частицы), перетаскиваемого из редактора ресурсов. Если требуется, чтоб в эффекте участвовали разные частицы, то нужно в меню выбора "Добавляемые параметры к объектам", которое активируется по правой кнопки мыши, выбрать параметр "картинка для рисования флаера". При рождении каждого флаера случайным образом будет выбираться одна из этих картинок. В выбранном параметре можно выбрать как ресурс картинки, так и количество картинок данного типа. | *'''картинка''' - Служит для рисоания флаера в случае выбора типа флаера "картинки" В поле этого параметра находится имя графического ресурса (частицы), перетаскиваемого из редактора ресурсов. Если требуется, чтоб в эффекте участвовали разные частицы, то нужно в меню выбора "Добавляемые параметры к объектам", которое активируется по правой кнопки мыши, выбрать параметр "картинка для рисования флаера". При рождении каждого флаера случайным образом будет выбираться одна из этих картинок. В выбранном параметре можно выбрать как ресурс картинки, так и количество картинок данного типа. | ||
*'''текст''' - Служит для рисования флаера в случае выбора типа флаера "текст". | *'''текст''' - Служит для рисования флаера в случае выбора типа флаера "текст". | ||
− | |||
При выборе типа флаера "картинки" параметр "текст" игнорируется и наоборот. Вместе текст и картинка не существуют. | При выборе типа флаера "картинки" параметр "текст" игнорируется и наоборот. Вместе текст и картинка не существуют. | ||
+ | '''Группа - шрифт''' | ||
+ | Служит для настройки внешнего вида текста в случае выбора типа флаера "текст". | ||
+ | *'''имя''' - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта). | ||
+ | *'''размер''' - Размер шрифта в пикселях. | ||
+ | *'''цвет''' - Цвет шрифта. | ||
'''Группа - модификаторы''' | '''Группа - модификаторы''' |
Версия 16:01, 27 мая 2013
Флаеры (flyers) - летающие картинки, при помощи которых можно реализовывать различные эффекты: взрывы, падающие снежинки, дождь, фонтан, огонь, летающая пыль, дым, пар и т.п.
Содержание
Общие параметры
(см. описание Object)
- имя - Имя объекта Flyer в дереве проекта. Может быт произвольным.
- id-объекта - Уникальный номер объекта Flyer, который можно увидеть при наведении курсора на строку "имя".
- синхронизация - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да".
- память - Если 1, то при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана). По умолчанию значение этого параметра 0.
- тип - Тип флаера. Определяет его функциональное назначение и его свойства. Для флаера возможны следующие типы: "картинки", "текст". Выбирается подходящий тип из выпадающего списка. По умолчанию указан тип "картинки".
Основные параметры
Группа - внешний вид
- картинка - Служит для рисоания флаера в случае выбора типа флаера "картинки" В поле этого параметра находится имя графического ресурса (частицы), перетаскиваемого из редактора ресурсов. Если требуется, чтоб в эффекте участвовали разные частицы, то нужно в меню выбора "Добавляемые параметры к объектам", которое активируется по правой кнопки мыши, выбрать параметр "картинка для рисования флаера". При рождении каждого флаера случайным образом будет выбираться одна из этих картинок. В выбранном параметре можно выбрать как ресурс картинки, так и количество картинок данного типа.
- текст - Служит для рисования флаера в случае выбора типа флаера "текст".
При выборе типа флаера "картинки" параметр "текст" игнорируется и наоборот. Вместе текст и картинка не существуют.
Группа - шрифт Служит для настройки внешнего вида текста в случае выбора типа флаера "текст".
- имя - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).
- размер - Размер шрифта в пикселях.
- цвет - Цвет шрифта.
Группа - модификаторы
- alpha (al) - Изменяет прозрачность используемого ресурса: от 0 (прозрачен) до 1 (не прозрачен).
- angle (ang) - Изменяет угол наклона используемого ресурса. Отсчитывается по часовой стрелке. Против - отсчитываются отрицательные углы.
- scaleX/scaleY (sx/sy) – Изменяют масштаб используемого ресурса, но при этом изменяет и положение точки рождения флаера, что делает использование данного модификатора крайне неудобным.
Модификаторы становятся активными если установлен флаг «использовать модификаторы», в противном случае установленные параметры игнорируются.
Состояния
- beg – состояние в котором флаер начинает свой цикл жизни (включается)
- end – состояние которое выключает флаер
Область рождения
- только контур (frame) - если включен флаг, по контуру, фигуры (круг или прямоугольник)
- радиус r (r) - внутри круга радиуса r;
- горизонтальная rx (rx) - внутри прямоугольника с шириной 2rx
- вертикальная ry (ry) - внутри прямоугольника с высотой 2ry
- из одной точки, если все параметры области рождения равны нулю: r=rx=ry=0;
Центр области рождения задается стандартными для всех объектов координатами x,y из раздела "положение". Круг имеет приоритет над прямоугольником (если r не равно 0, то, не зависимо от значений rx или ry, рождение будет происходить внутри круга):
Начальная скорость
- минимальная - минимальная скорость при рождении летуна в px/сек.
- максимальная - максимальная скорость при рождении летуна в px/сек.
- от угла - начальный угол сектора для направления скоростей
- до угла - конечный угол сектора для направления скоростей
- угловая - угловая скорость вращения одного летуна в градуса/сек.
При рождении каждый флаер имеет определенную скорость, величина (по модулю) которой выбирается случайным образом из диапазона от v1 до v2. Скорость измеряется в пикселях за секунду. Типичные значения, обычно, не превышают 100.
По умолчанию вектор скорости направлен изотропно (равновероятно во всех направлениях). В разделе "начальная скорость" можно определить сегмент круга, внутри которого будет направлена начальная скорость флаера. Углы отсчитываются от оси x вниз (положительные углы) или вверх (отрицательные углы) и измеряется в градусах. Например, если a1=45, a2=135, то флаеры будут вылетать вниз веером в 90 градусов.
Кроме линейной скорости можно задавать угловую скорость вращения - w, в градусах в секунду. Тогда при движении флаеры будут вращаться. Впрочем, увлекаться этим эффектом не стоит, так как это дополнительная нагрузка на ресурсы.
Цикл жизни
- на экране - максимально количество летунов которые видны на экране
- всего - общее число созданных летунов
- время' каждый флаер рождается, живет и умирает. Соответственно, можно задать три параметра (tmBorn, tmLife, tmDie) в ms.
- интенсивность - интенсивность рождения одного флаера в милисикундах.
- рождения - за период рождения tmBorn прозрачность флаера увеличивается от нуля до заданной в общих настройках.
- время жизни tmLife может быть отрицательным. В этом случае флаер живет, пока живет его группа (т.е. у него бесконечное время жизни). Если tmLife положительно, то после истечения времени tmLife флаер умирает в течении времени смерти tmDie.
- время смерти - за это время он меняет свою прозрачность, от установленной в общих параметрах до указанной
- до прозрачности - прозрачность в конце периода умирания
Когда флаер окончательно исчезает, вместо него в области рождения может появиться новый флаер. Это происходит, если число летающих к данному моменту флаеров не превышает параметра num (цикл жизни:на экране). Кроме этого, в процессе жизни группы флаеров подсчитывается общее число родившихся флаеров. Если их количество превышает параметр tot (цикл жизни:всего), то рождений больше не происходит. Если tot меньше 0, то подобное ограничение игнорируется.
Если параметры num и tot допускают рождение новых флаеров, то происходит это с интенсивностью, определяемой временем в миллисекундах на рождение одного флайера nms. Например, если число видимых флаеров равно num=100, а nms=10, то все 100 флаеров покажутся на экране через 1000 ms (одну секунду). Если при этом поставить время жизни tmLife=0, tmDie=1000, то получится файербол. Вообще, чтобы не было пульсаций при порождении флаеров, для интенсивности необходимо пользоваться формулой "общее время на количество":
nms = (tmBorn+tmLife+tmDie)/ num
Пульсации могут, тем не менее, происходить, даже при выполнении этой формулы, если параметр nms оказывается существенно меньше времени одного фрейма (вызова таймера). Поэтому надо стремиться к тому, чтобы nms был больше реального периода таймера. Впрочем, при помощи праметра "ограничение" (max) можно задавать максимальное число флаеров, которые могут рождаться в ms (тогда при большом тике таймера больше, чем разрешено не родиться).
Действующие силы
На каждый флаер может действовать одна из следующих сил:
- горизонтальная - постоянная горизонтальная сила fx, подобная силе ветра
- вертикальная - постоянная вертикальная сила fy. Если она положительна, то это оказывает эффект силы тяжести (ось y направлена вниз!)
- радиальная - постоянная радиальная сила fr. Она направлена к центру группы с координатами (x,y) и не зависит от расстояния до этого центра. Если fr положительна, то это сила отталкивания, если отрицательна - притяжения
- конфайнмента - радиальная сила конфайнмента fc. Аналогична fr, но её величина линейно растёт с увеличением расстояния от центра.
- к линии - сила притяжения к вертикальной линии, проходящей через координаты центра рождения флаеров (из общих параметров).
- случайная амплитуда стохастического (случайного) воздействия fs. При каждом перемещении к компонентам скорости добавляется случайная велична в диапазоне от -fs до fs. Например, снежинки неплохо моделируются с fy=fs=2
- трения сила трения ff, уменьшающая скорость объектов. Измеряется в процентах уменьшения скорости за секунду: 0 - нет трения, 100 - за секунду остановится.
В результате воздействия сил, и при неконтролируемом подвисании компьютера (таймер получает большой интервал времени), возможно резкое увеличение скорости флаеров. Для контроля этих эффектов служит раздел "ограничения" по скорости (vMax, px/сек) и величине смещения по экрану (dMax, px)
Звуки
- звук — звук, который будет запущен при переходе флаера в состояние beg
- зациклить — если установлен этот флаг, то звук будет зациклен
Советы
Для настройки флаеров необходимо контролировать множество параметров. Необходимо четко понимать смысл этих параметров и их возможное влияние на результат. Возможно, помогут следующие советы:
- Сначала надо определиться с базовыми параметрами - область рождения, величина и угол начальных скоростей.
- Затем определить направление и характер сил.
- Не стоит менять за один раз больше 2-х параметров
- На начальном этапе параметры необходимо менять решительно - в 2, в 10 раз и т.п.
- Необходимо экспериментировать с комбинацией цветов и размером флаеров.
- Запоминайте промежуточные, более или менее удачные, наборы параметров, чтобы к ним вернуться, если все "разрегулировалось".
- Если получился прикольный, но не нужный эффект - стоит запомнить его параметры, потом пригодится.
Производительность
Флаеры сильно грузят быстродействие машины. Поэтому необходим самоконтроль по необходимости их использования и контроль длительности кадра (с проверкой его на реальных устройствах). Ниже идет ряд советов:
- Если можне нужный эффект реализовать кадрами анимации - часто, лучше анимация, чем флаеры.
- Стремиться реализовать нужный эффект с минимумом флаеров
- Искать баланс соотношения размера картинки и количества флаеров. Большие картинки (даже, если их и не много) - долго рисуются. Большое число маленьких картинок - также плохо, т.к. много рисурсов уходит на обсчет их физики.
- Не увлекаться без нужды вращением частицы - это требует дополнительных вычислений матрицы поворота.
- Сила конфйнмента (зависящая от расстояния) не содержит корня и чуть быстрее радиальной силы.
- Помнить, что хороший эффект может, в силу производительности, совсем не так хорошо выглядить на мобильном устройстве.
Примечания
Флаеры не предпологают, что у них могут быть подобъекты. Если флаер подобъект машины состояний, то при её движении будет двигаться и центр эмиссии (область рождения флаеров), в результате чего возникает "шлейф" Флаеры не учитывают прозрачности родительского объекта или сцены, считая её единичной.