Типы частиц

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

Множество подпрограмм доступно для создания новых типов частиц и последующего их уничтожения:

part_type_create() Создаёт новый тип частицы. Это возвращает индекс типа. Этот индекс должен использоваться во всех запросах ниже, чтобы установить свойства типа частицы. Так что Вы будете часто хранить это в глобальной переменной.
part_type_destroy(ind) Уничтожает тип частицы ind. Вызовите это, если Вам не нужно больше сохранять пространство.
part_type_exists(ind) Возвращает при существующем обозначенном типе частицы.
part_type_clear(ind) Очищает тип частицы ind на установку по умолчанию.

Форма частицы

Частица имеет форму. Эта форма указывается спрайтом. Вы можете использовать любой желаемый спрайт для ваших частиц, но имеется 15 встроенных спрайтов. Они имеют размер 64x64 и имеют установки альфа величин, благодаря чему красиво смешиваются с фоном. Они указаны следующими константами:

Вы устанавливаете форму, используя следующую функцию:

part_type_shape(ind,shape) Устанавливает форму типа частицы к любой из констант выше (по умолчанию - pt_shape_pixel).

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

part_type_sprite(ind,sprite,animat,stretch,random) Устанавливает Ваш собственный спрайт для типа частицы. Если он анимированный, то Вы указываете, должен ли спрайт быть анимированным (1) или нет (0). Со stretch (1 или 0) Вы указываете, должна ли анимация быть задействована на протяжении всей жизни частицы. И с random (1 или 0) Вы можете указать, должен ли случайный кадр быть выбран как стартовое изображение.

Как только Вы получите выбранный спрайт для типа частицы (или по умолчанию форму, также вашу собственную), Вы может указать размер для него. Размер 1 - указывает обычный размер спрайта. Тип частицы может быть определён так, чтобы все частицы имели одинаковые или разные размеры. Вы можете указать диапазон размеров. Также, Вы можете указать, должен ли размер изменяться на протяжении всей жизни частицы с некоторой подвижностью в размере, давая при этом эффект мерцания.

part_type_size(ind,size_min,size_max,size_incr,size_wiggle) Устанавливает параметры размера для типа частицы. Вы определяете минимальный начальный размер, максимальный начальный размер, увеличение размера в каждом шаге (используйте отрицательное число для уменьшения в размере) и количество подвижности. (По умолчанию размер 1 и по умолчанию он не изменяется.)
part_type_scale(ind,xscale,yscale) Устанавливает горизонтальный и вертикальный масштаб. Этот фактор умножается с размером. В особенности полезно, когда Вы должны измерить масштабирование по-другому в x и y направлении.

Частицы также имеют ориентацию. Опять же, ориентация может быть одинаковой для всех частиц, а может и отличаться, и может изменяться целая жизнь спрайта. Углы определяются против часовой стрелки вращения, в градусах.

part_type_orientation(ind,ang_min,ang_max,ang_incr,ang_wiggle,ang_relative) Устанавливает свойства угла ориентации для типа частицы. Вы определяете минимальный угол, максимальный угол, увеличение в каждом шаге и количестве подвижности в угле. (По умолчанию 0.) Вы можете также указать, должен ли данный угол быть относительным (1) к текущему направлению движения или абсолютным (0). Например, установив все значения на 0, но ang_relative установили на 1, то ориентация частицы будет точно следовать за путём частицы.

Цвет и смешивание

Частицы будут иметь цвет. Есть различные способы, исходя из которых, Вы можете определить цвета для частиц. Самый простой путь состоит в том, чтобы указать единственный цвет. Вы можете также определить два или три цвета, между которыми цвет частицы будет интерполирован в течение целой её жизни. Например, частица может в начале быть белой, а затем становится чёрной в результате её жизни. Другая возможность является тем, что Вы указываете, что цвет каждой частицы должен быть отличен, выбран из диапазона цветов. Вы можете задать диапазон: красный, зелёный и синий; или диапазон: цветность, насыщенность и значение.

По умолчанию цвет белый. Когда Вы используете спрайт с его собственными цветами, это обычно то, что Вы хотите, и никакой цвет не должен быть определён.

part_type_color1(ind,color1) Указывает единственный цвет, который используется для частицы.
part_type_color2(ind,color1,color2) Определяет два цвета, между которыми цвет будет интерполирован.
part_type_color3(ind,color1,color2,color3) Подобно, но на сей раз цвет интерполируется между тремя цветами, которые представляют цвет в начале, в середине и в конце.
part_type_color_mix(ind,color1,color2) С этой функцией Вы указываете, что частица получит цвет, который будет получен из смеси двух указанных цветов. Этот цвет останется фиксированным целую жизнь частицы.
part_type_color_rgb(ind,rmin,rmax,gmin,gmax,bmin,bmax) Может использоваться, чтобы указать, что каждая частица должна иметь установленный цвет, но выбирается из диапазона. Вы определяете диапазон в красном, зелёном и синем компоненте цвета (каждый между 0 и 255).
part_type_color_hsv(ind,hmin,hmax,smin,smax,vmin,vmax) Может использоваться, чтобы указать, что каждая частица должна иметь установленный цвет, но выбирается из диапазона. Вы определяете диапазон в цветности, насыщенности и значении цвет (каждый между 0 и 255).

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

part_type_alpha1(ind,alpha1) Устанавливает единственный параметр альфа прозрачности (0-1) для типа частицы.
part_type_alpha2(ind,alpha1,alpha2) Подобно, но на сей раз начало и окончание задаются, и альфа значение интерполируется между ними.
part_type_alpha3(ind,alpha1,alpha2,alpha3) На сей раз задаются три значения, между которыми альфа прозрачность будет интерполирована.

Обычно, частицы смешиваются с фоном также как и спрайты. Но также возможно использовать совокупное смешивание. Это предоставит в особенности большой эффект для взрыва.

part_type_blend(ind,additive) Устанавливает использование дополнительного смешивания (1) или обычного смешивания (0) для типа частицы.

Жизнь и смерть

Частицы живут ограниченное время своей жизни. После смерти они исчезают. Целая жизнь измеряется в шагах. Вы можете указать целую жизнь (или диапазон сроков жизней) для каждого типа частицы. Частицы могут создать новые частицы различных типов. Есть два пути для этого. Они могут создать новые частицы в каждом шаге, или они могут создать частицы при умирании. Будьте осторожны, что общее количество частиц не становится слишком высоким.

part_type_life(ind,life_min,life_max) Устанавливает пожизненные ограничители для типа частицы. (По умолчанию оба 100.)
part_type_step(ind,step_number,step_type) Устанавливает количество и тип частиц, которые должны быть произведены в каждом шаге для обозначенного типа частицы. Если Вы используете отрицательное значение, то в каждом шаге частица будет произведена с шансом -1/количество. Так, например, со значением -5 частица будет произведена в среднем каждые 5 шагов.
part_type_death(ind,death_number,death_type) Устанавливает количество и тип частиц, которые должны быть произведены, когда частица указанного типа умирает. Снова Вы можете использовать отрицательные числа, чтобы создать частицу со специфическим шансом воспроизведения. Обратите внимание, что эти частицы создаются только тогда, когда частица умирает в конце своей жизни, не тогда, когда она умирает из-за разрушителя (смотрите ниже).

Движение частицы

Частицы могут двигаться в течение всей своей жизни. Они могут получить начальную скорость (или диапазон скоростей) и направление. Скорость и направление могут иногда изменяться. Также может быть определена гравитация, которая будет притягивать частицы в указанном направлении. Для этого существуют следующие функции:

part_type_speed(ind,speed_min,speed_max,speed_incr,speed_wiggle) Устанавливает свойства скорости для типа частицы. (По умолчанию значения равны 0.) Вы определяете минимальную и максимальную скорость. Случайное значение между заданными ограничителями выбирается, когда частица создаётся. Вы можете указать увеличение скорости в каждом используемом шаге отрицательного числа, чтобы замедлить частицу (скорость никогда не будет меньше чем 0). Наконец, Вы можете указать некоторое количество смещения скорости.
part_type_direction(ind,dir_min,dir_max,dir_incr,dir_wiggle) Устанавливает свойства направления для типа частицы. (По умолчанию значения равны 0.) Вы снова определяете диапазон направлений (против часовой стрелки, в градусах; 0 указывает движение направо). Например, чтобы позволить движению частицы в случайном направлении нужно выбрать 0 и 360 как значения. Вы можете определить увеличение в направлении для каждого шага, и количество смещения.
part_type_gravity(ind,grav_amount,grav_dir) Устанавливает свойства гравитации для типа частицы. (По умолчанию гравитация отключена.) Вы определяете некоторое количество гравитации, которое будет добавлено в каждом шаге и направлении. Например, используйте 270 для направления вниз.