Flyer

Материал из wiki.appsalutecreator.com
Перейти к: навигация, поиск
Flyer fountain property.JPG

Flyers (флаеры, партиклы)- летающие картинки, при помощи этого объекта можно реализовывать различные эффекты: взрывы, падающие снежинки, дождь, фонтан, огонь, летающая пыль, дым, пар и т.п.

Общие параметры

(см. описание Object)

  • имя - Имя объекта Flyer в дереве проекта. Может быт произвольным.
  • id-объекта - Уникальный номер объекта Flyer, который можно увидеть при наведении курсора на строку "имя".
  • синхронизация - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да".
  • сохранение параметров - Настройка этого параметра актуальна, если приложение в дальнейшем будет сворачиваться в системную панель («трей»). Выбирается значение этого параметра из выпадающего списка. Возможны следующие варианты: "нет", "только объект", "объект с подобъектами", "только подобъекты". При выходе из трэя будут восстановлены ранее измененные/установленные (при переходе с одного экрана на другой)параметры объектов или подобъектов в зависимости от выбранного варианта для этого параметра. По умолчанию указан параметр "нет". Следует помнить, что если выбирается для объекта некоторой сцены значения этого параметра отличное от "нет", то должно и предусматриваться соответствующее значение этого параметра и для этой сцены, и для экрана, содержащего эту сцену.
  • z - Параметр порядка рисования объекта. Сначала рисуются объекты с большим z, затем, поверх них - с меньшим.
  • память - Если 1, то при повторном открытии экрана объект не обновляет свои параметры (помнит текущие параметры, оставшиеся от предыдущего посещения экрана). По умолчанию значение этого параметра 0.
  • тип - Тип флаера. Определяет его функциональное назначение и его свойства. Для флаера возможны следующие типы: "картинки", "текст". Выбирается подходящий тип из выпадающего списка. По умолчанию указан тип "картинки".

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

Группа - внешний вид

  • картинка - Служит для рисоания флаера в случае выбора типа флаера "картинки" В поле этого параметра находится имя графического ресурса (частицы), перетаскиваемого мышкой из редактора ресурсов (поле должно быть в состоянии редактирования).
  • текст - Служит для рисования флаера в случае выбора типа флаера "текст".

При выборе типа флаера "картинки" параметр "текст" игнорируется и наоборот. Вместе текст и картинка не существуют.


Группа - шрифт

Служит для настройки внешнего вида текста в случае выбора типа флаера "текст".

  • имя - Номер шрифта - целое число, начиная с 0 (порядковый номер шрифта).
  • размер - Размер шрифта в пикселях.
  • цвет - Цвет шрифта.


Группа - модификаторы

  • alpha (al) - Изменяет прозрачность используемого ресурса: от 0 (прозрачен) до 1 (не прозрачен).
  • blending (bl) - Alpha смешивание. Взаимодействие каждой новой частицы (source) с раннее отрисованными (dest). Значения данного параметра выбираются из выпадающего списка. Каждый отдельный цвет, который мы видим, создается с помощью комбинации трех цветов: красного (red), зеленого (green) и синего (blue). RGB - является их аббревиатурой . Разные значения модификатора "blending" отличаются способ вычисления значений RGB-каналов и значения прозрачности.

blend - смешивание.

Rback = (Rsource * Ralpha) + (Rdest * (1 - Ralpha))

Gback = (Gsource * Galpha) + (Gdest * (1 - Galpha))

Bback = (Bsource * Balpha) + (Bdest * (1 - Balpha))

Aback = (Asource * Aalpha) + (Adest * (1 - Aalpha))


half - деление пополам.

Rback = (Rsource + Rdest) / 2

Gback = (Gsource + Gdest) / 2

Bback = (Bsource + Bdest) / 2

Aback = (Asource + Adest) / 2


add - добавление.

Rback = Rsource + Rdest

Gback = Gsource + Gdest

Bback = Bsource + Bdest

Aback = Asource + Adest


sub - вычитание.

Rback = Rsource - Rdest

Gback = Gsource - Gdest

Bback = Bsource - Bdest

Aback = Asource - Adest


none - ничего не происходит.

  • angle (ang) - Изменяет угол наклона используемого ресурса. Отсчитывается по часовой стрелке. Против - отсчитываются отрицательные углы.
  • scaleX/scaleY (sx/sy) – Изменяют масштаб используемого ресурса, но при этом изменяет и положение точки рождения флаера, что делает использование данного модификатора крайне неудобным.

Модификаторы становятся активными если установлен флаг «использовать модификаторы», в противном случае установленные параметры игнорируются.


Группа - звуки

  • звук - Звук, который будет запущен при переходе партиклов в состояние beg. Перетаскивается правой кнопки мышки из редактора ресурсов (поле должно быть в состоянии редактирования).
  • зациклить - Если 1, то звук будет зациклен. По умолчанию значение этого параметра 0.

Состояния

  • beg – Состояние в котором флаер начинает свой цикл жизни (включается).
  • end – Состояние которое выключает флаер.
  • stop_birth - Состояние заканчивает рождение. В по сути - "горшочек не вари"

Дополнительные параметры

Область рождения

  • только контур (frame) - Если 1, то частицы будут рождаться только по контуру, описанному параметрами. Если 0, то по всей площади.
  • радиус r (r) - Радиус области вокруг (х,у), где рождаются летуны.
  • горизонтальная rx (rx) - Горизонтальная область рождения. Летуны будут рождаться внутри прямоугольника с шириной 2*rx.
  • вертикальная ry (ry) - Вертикальная область рождения. Летуны будут рождаться внутри прямоугольника с высотой 2*ry.

Если все параметры области рождения равны нулю: r=rx=ry=0, то летуны будут рождаться из одной точки. Центр области рождения задается стандартными для всех объектов координатами x,y из раздела "положение". Круг имеет приоритет над прямоугольником (если r не равно 0, то, не зависимо от значений rx или ry, рождение будет происходить внутри круга):

Flyers born.png


Начальная скорость

  • минимальная - Минимальная скорость при рождении летуна в px/сек.
  • максимальная - Максимальная скорость при рождении летуна в px/сек.
  • от угла - Начальный угол сектора для направления скоростей.
  • до угла - Конечный угол сектора для направления скоростей.
  • угловая - Угловая скорость вращения одного летуна в градусах в секунду.

При рождении каждый флаер имеет определенную скорость, величина (по модулю) которой выбирается случайным образом из диапазона от v1 до v2. Скорость измеряется в пикселях за секунду. Типичные значения, обычно, не превышают 100.

По умолчанию вектор скорости направлен изотропно (равновероятно во всех направлениях). В разделе "начальная скорость" можно определить сегмент круга, внутри которого будет направлена начальная скорость флаера. Углы отсчитываются от оси x вниз (положительные углы) или вверх (отрицательные углы) и измеряется в градусах. Например, если a1=45, a2=135, то флаеры будут вылетать вниз веером в 90 градусов.

Flyers vel.png

Кроме линейной скорости можно задавать угловую скорость вращения - 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)

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

Меню выбора Добавляемые параметры к объектам активируется по правой кнопки мыши.

+.png картинка для рисования флаера

  • картинка для рисования флаера - Графический ресурс одного летуна. Перетаскивается мышкой из редактора ресурсов (поле должно быть в состоянии редактирования).
  • количество картинок этого типа - Чем больше это число, тем чаще будет встречаться картинка этого типа.

Актуален данный параметр, если в эффекте должны участвовать разные летуны. При рождении каждого флаера случайным образом будет выбираться одна из этих картинок.

Советы

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

  • Сначала надо определиться с базовыми параметрами - область рождения, величина и угол начальных скоростей.
  • Затем определить направление и характер сил.
  • Не стоит менять за один раз больше 2-х параметров
  • На начальном этапе параметры необходимо менять решительно - в 2, в 10 раз и т.п.
  • Необходимо экспериментировать с комбинацией цветов и размером флаеров.
  • Запоминайте промежуточные, более или менее удачные, наборы параметров, чтобы к ним вернуться, если все "разрегулировалось".
  • Если получился прикольный, но не нужный эффект - стоит запомнить его параметры, потом пригодится.

Производительность

Флаеры сильно грузят быстродействие машины. Поэтому необходим самоконтроль по необходимости их использования и контроль длительности кадра (с проверкой его на реальных устройствах). Ниже идет ряд советов:

  • Если можно нужный эффект реализовать кадрами анимации - часто, лучше анимация, чем флаеры.
  • Стремиться реализовать нужный эффект с минимумом флаеров
  • Искать баланс соотношения размера картинки и количества флаеров. Большие картинки (даже, если их и не много) - долго рисуются. Большое число маленьких картинок - также плохо, т.к. много ресурсов уходит на обсчет их физики.
  • Не увлекаться без нужды вращением частицы - это требует дополнительных вычислений матрицы поворота.
  • Сила конфайнмента (зависящая от расстояния) не содержит корня и чуть быстрее радиальной силы.
  • Помнить, что хороший эффект может, в силу производительности, совсем не так хорошо выглядеть на мобильном устройстве.

Примечания

Флаеры не предполагают, что у них могут быть подобъекты. Если флаер подобъект машины состояний, то при её движении будет двигаться и центр эмиссии (область рождения флаеров), в результате чего возникает "шлейф" Флаеры не учитывают прозрачности родительского объекта или сцены, считая её единичной.

Как уже говорилось, применение к объекту Flyer модификатора scale x/scale y нежелательно, так как это изменяет положение точки рождения флаера. Возможное решение этой проблемы будет состоять в следующем: флаер сделать подобъектом другого объекта, например, объекта Image, и применять модификаторы уже к нему.

Примеры

Фонтан

Flyer fountain property.JPGFontan2.JPG

Рыбки

Flyer fish property.JPGRibki2.JPG

Дождь

Flyer rain1 property.JPGDojd2.JPG

Снег

Sneg1.JPGSneg2.JPG

Фейерверк

Feyerverk1.JPGFeyerverk2.JPG

Звезды

Zvezdi1.JPGZvezdi2.JPG

Файербол

Fireball1.JPGFireball2.JPG

Взрыв

Vzriv1.JPGVzriv2.JPG

Дым

Dim1.JPGDim2.JPG

Свеча

Svecha1.JPGSvecha2.JPG

Огонь

Flyer fire 1 property.JPGFlyer fire.JPG

Летящие листья

Flyer leaf.JPGFlyer leaf 2.JPG

Стекающие капли

Flyer drop property.JPGFlyer drop.JPG


Косой дождь

Для изменения угла Flyer был сделан подобъектом объекта типа Image, к которому применялись модификаторы.

Flyer rain 2 property.JPGFlyer rain 2.JPG

Парящие руны

Flyer symbol propety.JPGFlyer symbol.JPG

Летающий текст

Flyer text propety.JPGFlyer text.JPG

Если текст разделить символом переноса строки "|", то летуны создадутся из указанных слов("слово1|слово2|слово3") или букв ("б|у|к|в|ы").

Использование модификатора "blending"

В данном примере использовались первые три значения этого модификатора: blend, half, add.

Flyer fire 3 property.JPGFlyer fire 3.JPG

Пример

Download