|
|
Строка 1: |
Строка 1: |
− | [[Файл:Flyer_leaf.JPG|right]]
| |
| | | |
− | '''Флаеры (flyers)''' - летающие картинки, при помощи которых можно реализовывать различные эффекты: взрывы, падающие снежинки, дождь, фонтан, огонь, летающая пыль, дым, пар и т.п.
| |
− |
| |
− | == Общие параметры ==
| |
− |
| |
− | (см. описание [[Object|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, рождение будет происходить внутри круга):
| |
− | <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)
| |
− |
| |
− | == Советы ==
| |
− |
| |
− | Для настройки флаеров необходимо контролировать множество параметров. Необходимо четко понимать смысл этих параметров и их возможное влияние на результат. Возможно, помогут следующие советы:
| |
− | * Сначала надо определиться с базовыми параметрами - область рождения, величина и угол начальных скоростей.
| |
− | * Затем определить направление и характер сил.
| |
− | * Не стоит менять за один раз больше 2-х параметров
| |
− | * На начальном этапе параметры необходимо менять решительно - в 2, в 10 раз и т.п.
| |
− | * Необходимо экспериментировать с комбинацией цветов и размером флаеров.
| |
− | * Запоминайте промежуточные, более или менее удачные, наборы параметров, чтобы к ним вернуться, если все "разрегулировалось".
| |
− | * Если получился прикольный, но не нужный эффект - стоит запомнить его параметры, потом пригодится.
| |
− |
| |
− | == Производительность ==
| |
− |
| |
− | Флаеры сильно грузят быстродействие машины. Поэтому необходим самоконтроль по необходимости их использования и контроль длительности кадра (с проверкой его на реальных устройствах). Ниже идет ряд советов:
| |
− | * Если можне нужный эффект реализовать кадрами анимации - часто, лучше анимация, чем флаеры.
| |
− | * Стремиться реализовать нужный эффект с минимумом флаеров
| |
− | * Искать баланс соотношения размера картинки и количества флаеров. Большие картинки (даже, если их и не много) - долго рисуются. Большое число маленьких картинок - также плохо, т.к. много рисурсов уходит на обсчет их физики.
| |
− | * Не увлекаться без нужды вращением частицы - это требует дополнительных вычислений матрицы поворота.
| |
− | * Сила конфйнмента (зависящая от расстояния) не содержит корня и чуть быстрее радиальной силы.
| |
− | * Помнить, что хороший эффект может, в силу производительности, совсем не так хорошо выглядить на мобильном устройстве.
| |
− |
| |
− | == Примечания ==
| |
− |
| |
− | Флаеры не предпологают, что у них могут быть подобъекты.
| |
− | Если флаер подобъект машины состояний, то при её движении будет двигаться и центр эмиссии (область рождения флаеров), в результате чего возникает "шлейф"
| |
− | Флаеры не учитывают прозрачности родительского объекта или сцены, считая её единичной.
| |
− |
| |
− | Как уже говорилось, применение к объекту Flyer модификатора '''scale x/scale y''' нежелательно, так как это изменяет положение точки рождения флаера.
| |
− | Возможное решение этой проблемы будет состоять в следующем: флаер сделать подобъектом другого объекта, например, объекта Image, и применять модификаторы уже к нему.
| |
− |
| |
− | == Примеры ==
| |
− |
| |
− | ===Фонтан===
| |
− |
| |
− | [[Файл:Fontan1.JPG|200px]][[Файл:Fontan2.JPG]]
| |
− |
| |
− | ===Рыбки ===
| |
− |
| |
− | [[Файл:Ribki1.JPG|200px]][[Файл:Ribki2.JPG]]
| |
− |
| |
− | ===Дождь ===
| |
− |
| |
− | [[Файл:Dojd1.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]]
| |