Flyer — различия между версиями

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

Версия 09:15, 25 июня 2013

Flyer fountain property.JPG

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

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

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

  • имя - Имя объекта Flyer в дереве проекта. Может быт произвольным.
  • id-объекта - Уникальный номер объекта Flyer, который можно увидеть при наведении курсора на строку "имя".
  • синхронизация - Применяется для синхронизации между лейаутами. Если указан параметр "нет", то объект будет активен только на текущем лейауте. По умолчанию указан параметр "да".
  • память - Если 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) + (Rdest * (1 - Galpha))

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

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


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

Rback = (Rsource + Rdest) / 2

Gback = (Gsource + Rdest) / 2

Bback = (Bsource + Rdest) / 2

Aback = (Asource + Rdest) / 2


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

Rback = Rsource + Rdest

Gback = Gsource + Rdest

Bback = Bsource + Rdest

Aback = Asource + Rdest


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

Rback = Rsource - Rdest

Gback = Gsource - Rdest

Bback = Bsource - Rdest

Aback = Asource - Rdest


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

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

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


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

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

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

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

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

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

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

Состояние

  • beg – Состояние в котором флаер начинает свой цикл жизни (включается).
  • end – Состояние которое выключает флаер.

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

  • только контур (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)

Советы

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

  • Сначала надо определиться с базовыми параметрами - область рождения, величина и угол начальных скоростей.
  • Затем определить направление и характер сил.
  • Не стоит менять за один раз больше 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

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

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

Flyer fire 3 property.JPGFlyer fire 3.JPG