Разница между страницами «Flyer» и «Файл:Lesson7 hiddenlist params .png»

Материал из wiki.appsalutecreator.com
(Различия между страницами)
Перейти к: навигация, поиск
м (Состояния)
 
(Rprotsenko загрузил новую версию Файл:Lesson7 hiddenlist params .png)
 
Строка 1: Строка 1:
[[Файл:flyer_fountain_property.JPG|right]]
 
  
'''Flyers '''(флаеры, партиклы)- летающие картинки, при помощи этого [[Object|объекта]] можно реализовывать различные эффекты: взрывы, падающие снежинки, дождь, фонтан, огонь, летающая пыль, дым, пар и т.п.
 
 
== Общие параметры ==
 
 
(см. описание [[Object|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''' - Состояние заканчивает рождение. В по сути - "горшочек, не вари"
 
*'''start_birth''' - Начать рождения частиц (по сути отмена состояния - "stop_birth");
 
*'''pause''' - Заморозить частицы - частицы не меняют свои параметры, но при этом остаются видимыми;
 
*'''run''' - Вернуть частицам рабочее состояние ( снятие состояния "pause");
 
 
== Дополнительные параметры ==
 
 
 
'''Область рождения'''
 
 
*'''только контур''' ''(frame)'' - Если 1, то частицы будут рождаться только по контуру, описанному параметрами. Если 0, то по всей площади.
 
*'''радиус r''' ''(r)'' - Радиус области вокруг (х,у), где рождаются летуны.
 
*'''горизонтальная rx''' ''(rx)'' - Горизонтальная область рождения. Летуны будут рождаться внутри прямоугольника с шириной 2*rx.
 
*'''вертикальная ry''' ''(ry)'' - Вертикальная область рождения. Летуны будут рождаться внутри прямоугольника с высотой 2*ry.
 
 
Если все параметры области рождения равны нулю: r=rx=ry=0, то летуны будут рождаться из одной точки.
 
Центр области рождения задается стандартными для всех объектов координатами x,y из раздела "положение". Круг имеет приоритет над прямоугольником (если r не равно 0, то, не зависимо от значений rx или ry, рождение будет происходить внутри круга):
 
<center>
 
[[Файл:flyers_born.png]]
 
</center>
 
 
 
 
'''Начальная скорость'''
 
 
*'''минимальная''' - Минимальная скорость при рождении летуна в px/сек.
 
*'''максимальная''' - Максимальная скорость при рождении летуна в px/сек.
 
*'''от угла''' - Начальный угол сектора для направления скоростей.
 
*'''до угла''' - Конечный угол сектора для направления скоростей.
 
*'''угловая''' - Угловая скорость вращения одного летуна в градусах в секунду.
 
 
При рождении каждый флаер имеет определенную скорость, величина (по модулю) которой выбирается случайным образом из диапазона от v1 до v2. Скорость измеряется в пикселях за секунду. Типичные значения, обычно, не превышают 100.
 
 
По умолчанию вектор скорости направлен изотропно (равновероятно во всех направлениях). В разделе "начальная скорость" можно определить сегмент круга, внутри которого будет направлена начальная скорость флаера. Углы отсчитываются от оси x вниз (положительные углы) или вверх (отрицательные углы) и измеряется в градусах. Например, если a1=45, a2=135, то флаеры будут вылетать вниз веером в 90 градусов.
 
<center>
 
[[Файл:flyers_vel.png]]
 
</center>
 
 
Кроме линейной скорости можно задавать угловую скорость вращения - 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, то получится файербол. Вообще, чтобы не было пульсаций при порождении флаеров, для интенсивности необходимо пользоваться формулой "общее время на количество":
 
<pre>
 
nms = (tmBorn+tmLife+tmDie)/ num
 
</pre>
 
Пульсации могут, тем не менее, происходить, даже при выполнении этой формулы, если параметр 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.JPG|200px]][[Файл:Fontan2.JPG]]
 
 
===Рыбки ===
 
 
[[Файл:Flyer fish property.JPG|200px]][[Файл:Ribki2.JPG]]
 
 
===Дождь ===
 
 
[[Файл:Flyer_rain1_property.JPG|200px]][[Файл:Dojd2.JPG]]
 
 
===Снег ===
 
 
[[Файл:Sneg1.JPG|200px]][[Файл:Sneg2.JPG]]
 
 
===Фейерверк ===
 
 
[[Файл:Feyerverk1.JPG|200px]][[Файл:Feyerverk2.JPG]]
 
 
===Звезды ===
 
 
[[Файл:Zvezdi1.JPG|200px]][[Файл:Zvezdi2.JPG]]
 
 
===Файербол ===
 
 
[[Файл:Fireball1.JPG|200px]][[Файл:Fireball2.JPG]]
 
 
===Взрыв ===
 
 
[[Файл:Vzriv1.JPG|200px]][[Файл:Vzriv2.JPG]]
 
 
===Дым ===
 
 
[[Файл:Dim1.JPG|200px]][[Файл:Dim2.JPG]]
 
 
===Свеча ===
 
 
[[Файл:Svecha1.JPG|200px]][[Файл:Svecha2.JPG]]
 
 
===Огонь ===
 
 
[[Файл:Flyer fire 1 property.JPG|200px]][[Файл:Flyer_fire.JPG]]
 
 
===Летящие листья ===
 
 
[[Файл:Flyer leaf.JPG|200px]][[Файл:Flyer_leaf_2.JPG‎]]
 
 
===Стекающие капли ===
 
 
[[Файл:Flyer drop property.JPG|200px]][[Файл:Flyer_drop.JPG]]
 
 
 
===Косой дождь  ===
 
 
Для изменения угла Flyer был сделан подобъектом объекта типа Image, к которому применялись модификаторы.
 
 
[[Файл:Flyer_rain_2_property.JPG|200px]][[Файл:Flyer_rain_2.JPG]]
 
 
===Парящие руны ===
 
 
[[Файл:Flyer symbol propety.JPG|200px]][[Файл:Flyer_symbol.JPG]]
 
 
===Летающий текст ===
 
 
[[Файл:Flyer_text_propety.JPG|200px]][[Файл:Flyer_text.JPG]]
 
 
Если текст разделить символом переноса строки "'''|'''", то летуны создадутся из указанных слов("слово1|слово2|слово3") или букв ("б|у|к|в|ы").
 
 
===Использование модификатора ''"blending"'' ===
 
 
В данном примере использовались первые три значения этого модификатора: blend, half, add.
 
 
[[Файл:Flyer fire 3 property.JPG|200px]][[Файл:Flyer fire 3.JPG]]
 
 
== Пример ==
 
 
[http://fs5.absolutist.com/files/wikisample/flyer.rar Download]
 
 
 
[[Category:Main objects]]
 

Текущая версия на 14:14, 13 октября 2023