Flyer

Материал из wiki.appsalutecreator.com
Версия от 00:39, 12 февраля 2012; Steps (обсуждение | вклад) (Новая страница: «flyers_prop.png Флаеры (flyers) - летающие картинки, при помощи которых можно реализовывать различн...»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

flyers_prop.png Флаеры (flyers) - летающие картинки, при помощи которых можно реализовывать различные эффекты - типа взрывов, падающих снежинок, струй фонтана и т.п. Внешний вид

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

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

Флаеры могут рождаться:

  • из одной точки, если все параметры области рождения равны нулю: r=rx=ry=0;
  • внутри круга радиуса r;
  • внутри прямоугольника с шириной 2rx и высотой 2ry.

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

flyers_born.png

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

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

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

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

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

Примечания

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