Flyer

Материал из wiki.appsalutecreator.com
Версия от 09:22, 28 мая 2013; Lkunica (обсуждение | вклад) (Область рождения)

Перейти к: навигация, поиск
Flyer leaf.JPG

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

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

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

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

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

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

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

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


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

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

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


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

  • alpha (al) - Изменяет прозрачность используемого ресурса: от 0 (прозрачен) до 1 (не прозрачен).
  • 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 раз и т.п.
  • Необходимо экспериментировать с комбинацией цветов и размером флаеров.
  • Запоминайте промежуточные, более или менее удачные, наборы параметров, чтобы к ним вернуться, если все "разрегулировалось".
  • Если получился прикольный, но не нужный эффект - стоит запомнить его параметры, потом пригодится.

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

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

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

Примечания

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

Примеры

Фонтан

Fontan1.JPGFontan2.JPG

Рыбки

Ribki1.JPGRibki2.JPG

Дождь

Dojd1.JPGDojd2.JPG

Снег

Sneg1.JPGSneg2.JPG

Фейерверк

Feyerverk1.JPGFeyerverk2.JPG

Звезды

Zvezdi1.JPGZvezdi2.JPG

Файербол

Fireball1.JPGFireball2.JPG

Взрыв

Vzriv1.JPGVzriv2.JPG

Дым

Dim1.JPGDim2.JPG

Свеча

Svecha1.JPGSvecha2.JPG