# Система частиц



![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/9ae/6b6/b5d/9ae6b6b5d5999033803aa86a3857a8c5.jpg)

\
Системы частиц похожи на соль: даже небольшое количество может добавить готовящемуся «блюду» стиля. Современные игры, в которых не используются системы частиц, выглядят довольно бледно.\
\
В этом туториале вы научитесь следующему:\
\
Как добавлять в Unity новые системы частиц.

* Узнаете, какие модули систем частиц используются чаще всего, и научитесь ими пользоваться.

\
Этот туториал состоит из двух основных частей: в первой мы создадим пламя факела, во второй — эффект взрыва бомбы.\
\
&#xNAN;_&#x41F;римечание:_ в этом туториале подразумевается, что вы знакомы с основами работы в Unity.&#x20;

\


### Приступаем к работе с системами частиц

\
Скачайте [заготовку проекта для этого туториала](https://koenig-media.raywenderlich.com/uploads/2017/11/ParticleSystemsStarterProjectV2-1.zip) и распакуйте её в удобное для вас место. Учтите, что для работы с туториалом вам понадобится как минимум Unity 2017.2.\
\
Откройте _Starter Project_ в Unity. Ассеты внутри него распределены по нескольким папкам:\
\


* _Materials_: содержит материал огня.
* _Models_: содержит модели факела и бомбы, а также их материалы.
* _Prefabs_: содержит префаб бомбы.
* _Scenes_: содержит сцены Torch и Bomb.
* _Scripts_: здесь находятся исходные скрипты.
* _Textures_: здесь находится текстура для материала огня.

\
Разобравшись с тем, где что находится, мы можем приступать к изучению работы систем частиц в Unity.\
\


### Добавление системы частиц

\
В общем случае система частиц испускает частицы в случайных точках в пределах заранее определённого пространства, которое может иметь форму, например, сферы или конуса. Система определяет время жизни самой частицы, и когда оно заканчивается, система уничтожает частицу.\
\
В системах частиц удобно то, что они являются компонентами, которые можно добавлять к любому GameObject в сцене. Хотите, чтобы из глаз акул вырывались лазерные лучи? Просто добавьте к GameObject глаза акулы систему частиц!\
\
Откройте сцену _Torch_ в окне Project Window и запустите сцену:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/85a/fc3/6e9/85afc36e9bda6f92c9a4924dde8137d2.png)

\
Пока здесь не происходит ничего интересного. Факел висит на стене, но на нём не видно огня. Для начала нам нужно добавить систему частиц.\
\
Остановите выполнение сцены и выберите _TorchFireParticles_ в Hierarchy. В Inspector нажмите на кнопку _Add Component_. Найдите _Particle System_ и нажмите, чтобы добавить её:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/317/8b6/4a6/3178b64a653f88cdfa8d5220b5a68747.png)

\


> _Примечание:_ вы могли заметить, что я не добавил систему частиц непосредственно к GameObject MedievalTorch. Я сделал так, чтобы частицы испускались из ёмкости с топливом в верхней части, а не из середины факела.

\
Запустите сцену, и вы увидите, что частицы уже испускаются:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/f82/6f0/58f/f826f058f19506c73ddf7ed2ba67ac91.gif)

\


> _Примечание:_ вы можете видеть вместо белых розовые частицы. Похоже, это баг Unity с заданием текстуры по умолчанию. Если у вас произошло такое, то не волнуйтесь, скоро мы зададим правильную текстуру пламени. Если вы хотите исправить этот баг уже сейчас, то нажмите на раздел _Renderer_ системы частиц, нажмите на _точку_ рядом с полем _Material_ и в открывшемся окне дважды щёлкните _Default-Particle_.\
> \
>
>
>

<figure><img src="https://habrastorage.org/getpro/habr/post_images/be9/a08/78d/be9a0878d1f7ec16352d3895672b609b.gif" alt=""><figcaption></figcaption></figure>

\
При выборе GameObject с присоединённой к нему системой частиц вы заметите в правом нижнем углу окна сцены чёрное диалоговое окно. Это диалоговое окно позволяет симулировать или останавливать систему частиц. Нажатие на кнопку _Simulate_ активирует систему частиц и заменяет её на кнопку “Pause”. Чтобы остановить симуляцию, нужно нажать на кнопку “Stop”.\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/056/0ea/e9f/0560eae9ff709bb08f77554f7313dbc4.png)

\
Это диалоговое окно полезно при создании систем частиц, выполняемых в течение ограниченного периода времени, например, для взрывов.\
\


### Рассмотрим систему частиц внимательнее

\
Взгляните на Inspector. Вы заметите, что добавленный нами компонент системы частиц имеет несколько подразделов:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/e9d/9af/3a9/e9d9af3a9ba11a52334b406c7894bb31.png)

\
Каждый из этих подразделов называется модулем (_Module_). В этих модулях содержатся параметры системы частиц. Развёрнутый по умолчанию модуль называется модулем _Main_:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/098/f90/e75/098f90e751b197ffb7fa7ab00853eba8.png)

\
Модуль Main — фундамент любой системы частиц в Unity. Здесь находятся самые основные параметры частиц:\
\


* _Duration_: время выполнения системы частиц в секундах. Оставим здесь значение по умолчани&#x44E;_&#x35;.00_.
* _Looping_: повторное испускание частиц до остановки системы частиц. Цикл перезапускается после достижения времени _Duration_. Огонь должен гореть постоянно, так что оставим этот параметр включённым.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/4e3/91f/df4/4e391fdf448d4ebeef8791efb0644880.gif)\
  &#xNAN;_&#x412;ключенный и отключенный_\

* _Prewarm_: используется, только когда включен _Looping_. Система частиц будет вести себя так, как будто выполнила полный цикл при запуске.\
  \
  **GIF**![](https://habrastorage.org/getpro/habr/post_images/56d/369/14b/56d36914bc66294db49d66735e41b281.gif)\
  &#xNAN;_&#x412;ключенный и отключенный_\
  Для эффекта огня отключим его, чтобы казалось, что факел только что подожгли.
* _Start Delay_: задержка в секундах перед тем, как система частиц начинает испускать частицы. Оставим здесь значение по умолчанию _0_.
* _Start Lifetime_: исходное время жизни частиц в секундах. После завершения времени частица уничтожается.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/686/946/0f7/6869460f700bdd5dd558a89347c145da.gif)\
  &#xNAN;_&#x421;верху: 8 секунд. Внизу: 3 секунды_\
  \
  Сделаем время жизни равным _4_ секундам; благодаря этому пламя не будет слишком высоким.
* _Start Speed_: исходная скорость частиц. Чем больше скорость частиц, тем сильнее они будут распространяться.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/8b7/6de/36f/8b76de36f770a21e330d4c5cbcaf2e7c.gif)\
  &#xNAN;_&#x421;верху: 2. Снизу: 10_\
  \
  Задайте значение скорости _0.75_; так эффект пламени будет медленнее и плотнее.

\


> _Примечание:_ изменяя параметры системы частиц, вы будете видеть её предварительный обзор в окне Game. В процессе выполнения туториала посматривайте на этот предварительный обзор.

\
Запустите сцену, чтобы посмотреть, как повлияли внесённые изменения:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/1d1/d64/846/1d1d64846f90a522f3a89c228abe2ca9.gif)

\
Мы настроили факел, но эффект огня пока оставляет желать лучшего. К счастью, в модуле Main есть дополнительные опции, позволяющие усовершенствовать форму и поведение факела.\
\


### Другие свойства модуля Main

\
Выберите в иерархии GameObject _TorchFireParticles_ и прокрутите вниз, к системе частиц. В модуле Main Module посмотрите на следующие свойства:\
\


* _Start Size_: исходный размер частиц.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/073/2e0/c21/0732e0c210120ff9d5534bc67cf06790.gif)\
  &#xNAN;_&#x421;верху: 0.2. Внизу: 1._\
  \
  Выберите размер _3_; это удобный размер, позволяющий более чётко видеть отдельные частицы.
* _Start Rotation_: исходный угол поворота частиц.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/e79/889/389/e79889389eea3a1c1a9c26c6ddc93249.gif)\
  &#xNAN;_&#x421;верху: 0°. Внизу: 45°_\
  \
  Оставьте значение _0°_; частицы круглые, поэтому вы вряд ли заметите разницу.
* _Start Color_: исходный цвет частиц. Оставьте цвет равным исходному значению _чисто белого (255,255,255)_; мы будем раскрашивать огонь с помощью текстуры.\

*   _Gravity Modifier_: изменяет масштаб значения _гравитации_, заданного в окне Unity _Physics Manager_. Если он равен 0, то гравитация будет отключена.\
    \
    **GIF**

    ![](https://habrastorage.org/getpro/habr/post_images/05b/c59/6e6/05bc596e687dc72dc2807128c15c20b5.gif)

    \
    Это изображение из системы с модификатором гравитации, равным _1_, то есть частицы падают вниз, как водопад. Сделайте гравитацию в вашей системе равной _0_; частицы будут двигаться вверх со скоростью, указанной в _Start Speed_.
* _Simulation Space_: перемещает частицы в _Local Space_ вместе с системой частиц. При выборе _World Space_ частицы после испускания перемещаются свободно.\
  \
  ![](https://habrastorage.org/getpro/habr/post_images/227/db8/7fb/227db87fbcedf39b39c4dcdc7fdfffbc.gif)\
  &#xNAN;_&#x421;верху: local space. Внизу: world space_\
  \
  Оставьте для своей симуляции значение _Local Space_. Влияние параметра будет заметно только когда система частиц будет двигаться.
* _Play On Awake_: начинает испускать частицы сразу же после включения. Если этот параметр отключен, то вам придётся вручную запускать систему частиц через скрипт или систему анимаций. Оставьте его включенным, потому что мы хотим, чтобы пламя начинало гореть при запуске сцены.
* _Max Particles_: максимальное количество частиц, которые могут быть живы в системе частиц одновременно. Если попробовать испускать больше частиц, чем заданное здесь значение, то они не будут испускаться вообще. Этот параметр в основном нужен из соображений производительности, и значения по умолчанию в _1000_ частиц в нашем случае более чем достаточно.

\
Ого, вот так список! Но в результате мы узнали, как добавлять в сцену систему частиц и настраивать её по своему вкусу.\
\
Снова запустите сцену, чтобы увидеть, как на неё повлияли изменения:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/f4e/4d0/798/f4e4d0798c473bdd353e311ecdafe170.gif)

\
С каждым разом становится всё больше похожим на пламя, правда?\
\
Однако нам нужно больше частиц. Для этого нам нужно изменить _emission_ системы.\
\


### Знакомство с модулем Emission

\
Модуль _Emission_ управляет количеством и временем испускаемых частиц в системе и позволяет создавать любые эффекты, от постоянного потока до резкого взрыва частиц.\
\
Находясь в Inspector системы частиц, нажмите на заголовок модуля Emission:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/4fc/d27/047/4fcd2704713f4e6106660a9e9736b8a5.png)

\
При этом откроется модуль Emission:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/963/d08/a59/963d08a59166cd5c51f99b34aa301e7d.png)

\
&#xNAN;_&#x52;ate over Time_ представляет количество частиц, испускаемых за секунду. Задайте для _Rate over Time_ значение _15_.\
\
Запустите сцену снова; теперь система частиц будет больше походить на горящее пламя.\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/506/694/28e/50669428e55613a3472307f2d9667c78.gif)

\
Но заметно, что она всё ещё больше похожа на дым. И здесь мы внесём самое большое изменение на текущем этапе туториала: собственную текстуру!\
\


### Добавление собственной текстуры

\
У всех частиц есть материал частиц и текстура, задающая их внешний вид. С текстурой по умолчанию мы можем сделать только это. Заменив текстуру, мы можем создавать эффекты наподобие волшебных звёздочек, дыма и, разумеется, огня.\
\
Заменить текстуру частиц достаточно просто. До этого момента частицы отрисовывались на экране с помощью материала _Default-Particle_, который является материалом частиц с круговой градиентной текстурой:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/211/8be/c31/2118bec313ab5779c619db4ec99277ae.png)

\
Чтобы заменить этот материал, выберите в иерархии GameObject _TorchFireParticles_. Затем найдите в инспекторе компонент системы частиц и откройте модуль _Renderer_ системы частиц.\
\
Откройте папку _Materials_ в окне Project View и перетащите на _FireMaterial Material_ на свойство _Material_:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/4ab/3ac/b28/4ab3acb28f48a212fe7880f13a8c0851.gif)

\
Затем запустите сцену, чтобы увидеть, как применяется наша выбранная текстура:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/124/3c8/51f/1243c851f1acb605a3ade17b3f351f39.gif)

\
Чувствуете жар? Однако пламя слишком широкое; Чтобы исправить это, нам нужно изменить форму системы частиц.\
\


### Изменение формы системы частиц

\
Модуль _Shape_, как можно понять из названия, управляет формой и поведением частиц в этой форме. Можно выбрать одну из нескольких различных форм; каждая имеет свои собственные параметры. Это позволяет создавать частицы в параллелепипеде, в сфере или даже в собственном меше!\
\
Разверните модуль _Shape_ в инспекторе:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/80f/02f/0fb/80f02f0fb0358fa291a6027489c743f7.png)

\
В качестве формы (_shape_) системы частиц выбран конус (_cone_), то есть частицы испускаются из основания _base_ и движутся наружу под углом (_angle_):\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/045/f6e/9f1/045f6e9f16bfc2846f99ff157661773c.png)

\
В показанном выше примере основание окрашено _синим_, угол _зелёным_, а частицы — _красным_. Также стоит заметить, что при развёрнутом модуле Shape мы видим в окне Scene удобный предварительный обзор конуса:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/12f/082/6cb/12f0826cb004a3000ef7ab0168c908be.png)

\
Меняя _Angle_, можно изменять размер конуса, делая его шире или уже. Укажите значение _7_; так мы получим удобную узкую границу, которая немного расширяется, когда частицы поднимаются вверх.\
\
Меняя _Radius_, мы можем менять размер основания. Чем больше значение, тем больше будут рассеиваться частицы при испускании. Выберите значение _0.2_; так мы обеспечим создание пламени внутри ёмкости для топлива факела.\
\
Запустите сцену и посмотрите, как изменилась форма пламени:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/dfd/bee/af2/dfdbeeaf2c1ab88e29b892b286b01021.gif)

\
Оно начинает походить на настоящее пламя! Последнее, что можно сделать — изменять размер частиц с течением времени их жизни.\
\


### Изменение размера с течением времени жизни

\
С помощью модуля _Size over Lifetime_ можно создавать частицы, увеличивающиеся или уменьшающиеся с течением их жизни, или даже пульсирующие, как светлячки в лесу.\
\
Найдите в списке модулей системы частиц раздел _Size over Lifetime_. По умолчанию от выключен, поэтому поставьте флажок рядом с названием модуля:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/08c/0cc/631/08c0cc631d732bb088f14cb1a5693115.png)

\
Разверните модуль Size over Lifetime, нажав на его название. Так вы откроете тёмно-серый фон с плоской кривой (_Curve_) в верхней части:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/7cf/6e6/a4d/7cf6e6a4d6f95312fa1200699413a229.png)

\
Нажмите на _тёмно-серый фон_, чтобы открыть редактор кривых в нижней части инспектора. Горизонтальная ось отображает время жизни частицы, а вертикальная ось — её размер:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/66e/7ee/964/66e7ee964c3459926d04d1f4899059c1.png)

\
Для редактирования кривой можно перемещать ключевые точки с обоих сторон красной линии; добавлять новые ключи можно двойным нажатием на любое место кривой. Для удаления ключевых точек нажмите правой клавишей мыши на точку и выберите _Delete Key_. Также можно выбрать одну из заранее созданных кривых в нижней части окна:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/0fb/be0/7e1/0fbbe07e11cc44a1ea81308efdbd46d9.gif)

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


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/ab2/f72/203/ab2f722037da0d9d5fd961fe57a10c27.png)

\
Запустите сцену, чтобы увидеть эффект во всей его полноте!\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/2f2/136/72f/2f213672fa1522abb3bbf975a856c11b.gif)

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


### Создание эффекта бомбы

\
Создать эффект взрыва в Unity довольно просто. Как только вы разберётесь, как создавать экземпляры частиц по своему усмотрению, вы сможете использовать этот эффект для таких вещей, как колёса автомобиля, выбрасывающие искры при трении о землю, или воздушные шары, которые взрываются и выбрасывают из себя конфетти.\
\
Откройте _Bomb scene_ в Project Window и запустите сцену:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/0f1/e49/b0a/0f1e49b0ae2f5efbd8ee04815a2886f2.png)

\
В нижней части сцены есть пол, но кроме него в сцене больше ничего не происходит.\
\
Для создания бомб передащите префаб _Bomb_ в слот префаба _Bomb Emitter_:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/dbe/963/c48/dbe963c48bf38b18981b10214bf78924.gif)

\
Запустите сцену снова, чтобы увидеть, как появляются бомбы:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/b2e/642/d66/b2e642d6658604b8c55cc9ce42496335.gif)

\
Эмиттер создаёт новую бомбу через каждые две секунды. Чтобы они _вращались_, нужно добавить при создании бомбы небольшую вращающую силу.\
\
Откройте скрипт _Bomb_ в папке _Scripts_ окна Project Window.\
\
Добавьте в `Start()` следующий код:\
\


```
void Start()
{
    float randomX = UnityEngine.Random.Range (10f, 100f);
    float randomY = UnityEngine.Random.Range (10f, 100f);
    float randomZ = UnityEngine.Random.Range (10f, 100f);

    Rigidbody bomb = GetComponent<Rigidbody> ();
    bomb.AddTorque (randomX, randomY, randomZ);
}
```

\
Первые три строки генерируют случайные значения float от 10 до 100 для осей x, y и z. Далее мы получаем ссылку на компонент Rigidbody бомбы и прикладываем к нему момент. Благодаря этому бомба начинает вращаться в случайном направлении. Сохраните изменения в скрипте, вернитесь в Unity и запустите сцену.\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/22b/ff4/dc6/22bff4dc67788a20a4377427ec221080.gif)

\
Теперь бомбы при падении красиво вращаются. Но я обещал вам взрывы!\
\
В иерархии нажмите на кнопку _Create_ и выберите _Create Empty_. Нажмите на созданный GameObject и назовите его _ExplosionParticles_. Далее добавьте к этому GameObject новую систему частиц. Если вы забыли, как создавать систему частиц, то посмотрите первый раздел туториала.\
\
Создав систему частиц, перетащите GameObject _ExplosionParticles_ из иерархии в папку _Prefabs_ в Project Browser. После этого удалите GameObject _ExplosionParticles_ из Project Hierarchy.\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/cd4/3c2/76f/cd43c276f4cc479e556cf54242862a77.gif)

\
Затем выберите префаб _Bomb_ в папке _Prefabs_ и перетащите префаб _ExplosionParticles_ в слот Explosion Particles Prefab _Bomb_ следующим образом:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/27f/a4a/1f3/27fa4a1f33b43da23716406e4b9a4c27.gif)

\
Теперь при касании бомбой земли будет создаваться новый GameObject Explosion Particles.\
\
Запустите сцену, чтобы увидеть, как выглядит взрыв. Если у вас снова появляется баг с розовыми текстурами, то не волнуйтесь, мы поменяем текстуру.\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/91b/ed9/578/91bed9578c2aa8c55249cd8d41fba86c.gif)

\
Очень _волшебно_, но пока совершенно непохоже на взрыв!\
\
Как и в случае с факелом, мы будем использовать для системы частиц материал Fire.\
\
Выберите префаб _ExplosionParticles_ в окне Project Window, а затем разверните в инспекторе модуль _Renderer_. Перетащите _FireMaterial_ из папки Materials из окна Project Window в слот _Material_, как показано ниже:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/745/1ef/6cf/7451ef6cfcf7301126dd784c75291b8d.gif)

\
Чтобы завершить эффект, нам нужно изменить следующие параметры в модуле Main:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/9b0/d2a/af6/9b0d2aaf6ec5a5ade8a3990133a0248b.png)

\


1. Присвойте _Duration_ значение _0.70_.
2. _Looping_ нужно отключить. Частицы должны испускаться только один раз.
3. Задайте _Start Lifetime_ значение _0.7_.
4. Присвойте _Start Speed_ значение _10_.
5. Задайте _Start Size_ значение _2_.
6. Задайте _Gravity Modifier_ значение _1_. Благодаря этому частицы в конце будут слегка спускаться вниз.

\
Запустите сцену с бомбой, чтобы увидеть. что мы создали:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/e75/62a/b35/e7562ab35dfd70c370fc2092ca81a6b5.gif)

\
Ну, это уже похоже на взрыв, но определённо можно сделать лучше!\
\


### Создание взрыва

\
Чтобы улучшить взрыв, мы изменим свойства модулей системы частиц. Догадываетесь, какой модуль мы будем изменять? Вот подсказка — мы уже его использовали.\
\
Если вы решили, что это модуль Emission, то вы молодец!\
\
Разверните _Emission Module_. Rate — это количество частиц, создаваемых за секунду. Для взрыва нам нужен не постоянный поток частиц, а резкая вспышка.\
\
Задайте _Rate over Time_ значение _0_. Теперь перейдите к _Rate over Distance_ и вы увидите список _Bursts_, который по умолчанию пуст:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/eef/e50/52d/eefe5052d3f93b75563104de34acf8f5.png)

\
Burst — это набор частиц, испускаемых одновременно в определённый момент времени.\
\
Нажмите на _кнопку +_ в нижнем правом углу, чтобы добавить новый Burst. Вы увидите два поля: _Time_ и _Count_:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/687/108/0f4/6871080f4c1648ed53819c239569de65.png)

\
Оставьте _Time_ равным _0_, и задайте _Count_ значение _150_. Такие параметры заставят систему частиц одновременно испускать 150 частиц в начале системы.\
\
Запустите сцену. Как всё выглядит теперь?\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/b94/2ff/213/b942ff21339f3e1eecf64125fcda0fb3.gif)

\
Теперь это _больше_ походит на взрыв! Хотя этот взрыв выглядит лучше, он всё равно имеет уродливую коническую форму, и частицы не затухают, а просто исчезают. Чтобы придать взрыву окончательный вид, ему нужно задать правильную форму.\
\
Для начала развернём модуль _Shape_:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/1d1/516/962/1d15169627084fed58499731077eb55a.png)

\
Мы уже использовали этот модуль для формы пламени факела, но здесь можно выбрать и другие формы. Нажмите на раскрывающееся поле, в котором написано _Cone_, чтобы увидеть все доступные варианты:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/558/242/b91/558242b91cb282242e26e4a678b673cf.png)

\
Каждая форма влияет на эмиттер по-своему. На каждой показанной ниже анимации показан одинаковый эмиттер, у которого меняется только форма:\
\
&#xNAN;_&#x421;фера (Sphere)_\


![](https://habrastorage.org/getpro/habr/post_images/14f/6ec/ab0/14f6ecab0565133b8cbdfbd654f43b3f.gif)

\
&#xNAN;_&#x41F;олусфера (HemiSphere)_\


![](https://habrastorage.org/getpro/habr/post_images/4f5/d23/7dc/4f5d237dc2e5297d408e6630cba2bfa9.gif)

\
&#xNAN;_&#x41A;онус (Cone)_\


![](https://habrastorage.org/getpro/habr/post_images/bf1/c4c/fe0/bf1c4cfe0202667e08045f3182861bec.gif)

\
&#xNAN;_&#x41F;араллелепипед (Box)_\


![](https://habrastorage.org/getpro/habr/post_images/add/343/430/add3434300b8dc0d84ab3a7ede9fc77b.gif)

\
&#xNAN;_&#x41C;еш (куб) (Mesh)_\


![](https://habrastorage.org/getpro/habr/post_images/c04/c5a/c36/c04c5ac364e38b06af498061217a5f61.gif)

\
&#xNAN;_&#x41A;руг (Circle)_\


![](https://habrastorage.org/getpro/habr/post_images/57a/0b3/255/57a0b32553f460472494125e4b5c5a7d.gif)

\
&#xNAN;_&#x420;ебро (Edge)_\


![](https://habrastorage.org/getpro/habr/post_images/08f/406/159/08f406159ec3e505511bff30a0664e2d.gif)

\
От одной системы можно получить множество различных эффектов, просто меняя её форму! Для создания реалистичного взрыва выберите форму _Sphere_.\
\
Запустите сцену и готовьтесь _взорваться_:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/216/bc0/e95/216bc0e95b7f5fecdf9217c2c709491d.gif)

\
Теперь всё выглядит потрясающе!\
\
Хотя взрыв и красив, у нас есть небольшая проблема. Частицы просто исчезают. Это создаёт ощущение дрожания и выглядит совсем неестественно. Вместо того, чтобы просто исчезать, частицы должны со временем затухать, чтобы взрыв пропадал постепенно.\
\


### Изменение цвета

\
Открыв систему частиц в инспекторе, нажмите на флажок рядом с модулем _Color over Lifetime_, чтобы включить его, а затем разверните его. Вы сразу увидите слово _Color_ с белым блоком рядом с ним. _Нажмите_ на _белый блок_:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/581/d85/b76/581d85b76c9a572fe965c0f14c038af1.png)

\
При этом откроется редактор градиента:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/01e/dfa/14c/01edfa14cec488602e102500f64483cb.png)

\
Изменение цвета в течение времени жизни частиц представлено в виде градиента. Начальный цвет находится слева, и частицы постепенно изменяют цвет на указанный в правой части:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/6d5/7ff/514/6d57ff5142f434f547322a8a01770694.png)

\
Четыре белые полосы по краям называются _маркерами_; нажмите между двумя имеющимися маркерами, чтобы добавить новый. Чтобы удалить маркер, перетащите его с полосы:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/c4a/452/cd0/c4a452cd0d287e628bc6e493ecf4df88.gif)

\
Верхние маркеры управляют _Alpha_ или непрозрачностью цвета, а нижние — значениями цвета _RGB_ (Red, Green, Blue).\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/ab8/7cd/5e5/ab87cd5e5bf407224b37febf5ebcafe3.png)

\
Нажмите на самый правый альфа-маркер. В нижней части редактора градиента будет показано текущее значение альфа-канала:\
\


![](https://habrastorage.org/r/w1560/getpro/habr/post_images/587/c3e/8d9/587c3e8d95fa23189ce17c180858f982.png)

\
Перетащите ползунок к _0_. Теперь частицы будут постепенно становиться прозрачными в течение времени свой жизни.\
\
Снова запустите сцену, чтобы посмотреть, как повлияли внесённые изменения:\
\
**GIF**

![](https://habrastorage.org/getpro/habr/post_images/35d/8c0/130/35d8c0130fac89ff9fa9f49c227e8aec.gif)

\
Замечательный взрыв!\
\
Хотите ещё больше улучшить сцены? Вернитесь к сцене с факелом и сделайте так, чтобы пламя использовало модуль _Size Over Lifetime Module_ для получения похожего эффекта.\
\


### Куда двигаться дальше?

\
Готовый проект можно скачать [отсюда](https://koenig-media.raywenderlich.com/uploads/2017/11/ParticleSystemsFinalProjectV2-1.zip).\
\
В этом туториале вы узнали, как в Unity работают системы частиц и их модули, а также научились тому, как настраивать их для получения нужного эффекта. Поэкспериментируйте с различными параметрами, чтобы увидеть, каких ещё эффектов можно добиться.\
\
Подробную информацию о системе частиц Shuriken и её модулях см. в [официальной документации Unity](http://docs.unity3d.com/Manual/ParticleSystems.html) и в [видео о системах частиц](https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/particle-systems). Также о скриптинге систем частиц можно подробнее узнать [здесь](https://docs.unity3d.com/ScriptReference/ParticleSystem.html).
