Современные игры, которые не используют эффекты частиц, искушенным игрокам могут показаться пресными. Частицы в Unity словно приправа к блюду: даже в небольшом количестве они могут добавить дополнительный "блеск" к вашей игре.
Частицы также придают достоверность игровым сценам. Они могут стать основой ревущего костра или световых эффектов заклинаний волшебника. Кроие того, они могут быть использованы для создания дыма, пыли, взрывов и даже радуги!
По существу, частицы представляют собой небольшие, простые картинки или меши, которые испускаются, а затем манипулируются системой частиц в течение их жизни.
Unity позволяет легко создавать системы частиц. Unity использует мощную модулярную встроенную систему частиц под названием Shuriken, , которую нетрудно выучить, и которая позволяет создавать сложные эффекты.
В этом уроке вы узнаете следующее:
- Как добавить новую систему частиц в Unity.
- Что делают наиболее часто используемые модули систем частиц, а также то, как их использовать.
Начало работы с частицами в Unity
Скачайте стартовый проект и распакуйте в удобном месте. Вы будете использовать его в качестве отправной точки.
Этот учебник состоит из двух основных частей; в первой, вы будете создавать пламя для факела, а во второй - эффект взрыва бомбы.
Откройте Starter Project в Unity с рассортированными внутри по следующим папкам ассетами:
- Materials
- Содержит материал огня.
- Models
- Содержит модели факела и бомбы и их материалы.
- Prefabs
- префаб бомбы.
- Scenes
- Содержит сцены с факелом и бомбой.
- Scripts
- Содержит скрипты.
- Textures
- Содержит текстуру для огня.
Добавление системы частиц
Система частиц излучает частицы в случайным образом в пределах заранее определенного пространства, которое может иметь форму шара или конуса. Система определяет срок службы самой частицы и, по истечении этого времени жизни, разрушает частицу. Приятной особенностью систем частиц является то, что они являются компонентами, которые можно добавить к любому игровому объекту (GameObject) в сцене.
Откройте сцену Torch а окне Project и запустите сцену:
Мы видим фонарь, висящий на стене, но никакого огня нет. Для начала нам нужно добавить систему частиц. Выберите TorchFireParticles в Иерархии. Внутри Инспектора нажмите на кнопку Add Component, найдите Particle System и нажмите кнопку, чтобы добавить ее:
Возможно, вы заметили, что мы не не добавили систему частиц непосредственно к игровому объекту факела. Это происходит потому, что частицы будут излучается из середины факела, а не из топливного контейнера в верхней части.
Запустите сцену и вы увидите, что у вас есть излучающиеся частицы:
Правда, то, что мы сейчас видим, не похоже огонь, но мы исправим это в ближайшее время. Пока что вам необходимо понять текущее состояние системы частиц и как изменить его.
При выборе игрового объекта (GameObject) с прикрепленной системой частиц, вы увидите черное диалоговое окно в правом нижнем углу окна Сцены (Scene view). Этот диалоговое окно дает возможность моделировать или остановить систему частиц. Щелчок на кнопке Simulate (Смоделировать) активизирует вашу систему частиц и изменит кнопку на кнопку Pause (Пауза). Чтобы остановить моделирование, нажмите на кнопку Stop (Стоп).
Этот диалог полезен для проектирования систем частиц, которые работают на фиксированной временной шкале, например, взрывы.
Пристальный взгляд на систему частиц
Взгляните на вкладку Инспектор и Вы заметите, что в ней появился компонент системы частиц, который имеет несколько подразделов:
Каждый из этих подразделов называется Модулем. Эти модули содержат параметры для системы частиц. Модуль, открывающийся по умолчанию – модуль Main module:
Главный модуль - основа любой системы частиц в Unity. Наиболее распространенные параметры частиц:
- Duration
- Продолжительность времени, в течении которого будет работать система. Оставьте значение по умолчанию, равное
5.00
.
- Looping
Если включена, система начнет свою работу в месте завершения своего duration цикла и начнет всё заново.
Огонь должен гореть непрерывно, поэтому оставим включенной.
- Prewarm
- Если включена, система будет инициализирована так, будто она уже прошла через весь цикл своей работы. Работает только когда Looping также включено.
Для нашего пламени оставим его выключенным, чтобы факел выглядел только что зажженным.
- Start Delay
- Задержка в секундах до запуска системы излучения частиц после ее включения. Оставьте значение по умолчанию, равное
0
.
- Start Lifetime
Начальная продолжительность жизни частиц.
Установите продолжительность равной 1.2
секунд, чтобы пламя не было слишком высоким.
- Start Speed
Начальная скорость каждой частицы в соответствующем ей направлении. Чем больше скорость частиц, тем больше распространение они получат.
Установите скорость равной 0.75
. Это сделает пламя более плотным.
При изменении параметров системы частиц, вы увидите предварительный просмотр в окне игры. Поэкспериментируйте со значениями по своему усмотрению, чтобы узнать о том, как каждая настройка влияет на вашу систему.
Получившийся спецэффект выглядит довольно круто, но напоминает скорее пар, дым, но никак не огонь. Уже сейчас вы можете порадоваться своим успехам, но приготовьтесь к следующей партии настроек основного модуля! :]
Дополнительные свойства основного модуля
Вы настроили факел, но эффект огня по-прежнему оставляет желать лучшего. К счастью, главный модуль имеет дополнительные возможности для дальнейшей коррекции формы и поведения вашего факела.
Выберите игровой объект TorchFireParticles в Иерархии и прокрутите вниз до системы частиц, если она еще не открыта. Взглянитена следующие свойства под Main Module (Главный модуль):
- Start Size
Начальный размер каждой частицы.
Установите размер частицы 0.25
; это управляемый размер, который позволяет увидеть отдельные частицы более четко.
- Start Rotation
Начальный угол поворота каждой частицы.
Сделайте начальный угол поворота равным 0°
, поскольку нашу частицы имеют круглую форму, так что вы вряд ли заметите разницу.
- Start Color
Начальный цвет каждой частицы. Оставьте текущий белый цвет, поскольку вы будете окрашивать огонь с помощью текстуры.
- Gravity Modifier
Масштабирование значения гравитации в менеджере физики (physics manager). Значение равное 0
приведет к отключению гравитации.
Изображение выше взято из системы со значением Модификатора Гравитации, равным 1
, благодаря которому частицы летят вниз как вода в водопаде. Оставим этот параметр на 0
; частицы будут двигаться вверх со скоростью, заданной в Start Speed.
- Inherit Velocity
-
Запускает частицы с той же самой скоростью velocity что и система частиц. Работает только тогда, когда к системе частиц добавлен Rigidbody.
Оставьте Inherit Velocity равной 0
, поскольку для создания эффекта огня она нам не понадобится.
- Simulation Space
Указывает относительно какой из систем координат (с.к.) должны начать свое движение частицы? Локальной (и как следствие двигаться вместе с самими объектом) или мировой?
Выберите Local Space (Локальная система координат). Эффект будет заметен только приперемещении системы частиц.
- Play On Awake
- Начинает ли система свою работу автоматически в момент создания объекта?
- Max Particles
Максимальное количество частиц одновременно находящихся в системе. Старые частицы будут удалены, когда будет достигнут предел их жизненного цикла. Этот параметр используется в основном для повышения производительности. Значение по умолчанию, равное 1000
, - более чем достаточно в нашем случае.
Это был довольно внушительный список, но в результате вы узнали, как добавить систему частиц к сцене и как настроить ее по своему вкусу. Запустите сцену еще раз, чтобы увидеть эффект от внесенных изменений:
Выглядит все больше и больше похоже на огонь, правда? Нужно добавить больше частиц, а для этого надо редактировать модуль emission of the system.
Введение в модуль Emission (Emission Module)
Модуль Emission является одним из наиболее важных модулей в системах частиц Unity. Он обрабатывает число и время излучения частиц в системе, чтобы создать непрерывный поток или внезапный выброс частиц в зависимости от ваших потребностей. Находясь в Инспекторе Системы частиц, щелкните по заголовку Emission:
Вкладка модуля раскроется и даст нам возможность задать значения:
Rate представляет собой количество частиц излученных за единицу времени (Time), или пройденного пути (Distance). Вы можете переключаться между этими двумя режимами, щелкнув на поле со списком и выбрая нужный режим:
Оставьте настройки в Time и измените Rate на 50
. Запустите сцену снова:
Мы по-прежнему видим нечто похожее на дым. Но, без паники, нам на помощь приходят пользовательские текстуры!
Добавление пользовательских текстур
Все частицы имеют материал и текстуру, которые определяют их вид. Есть много вариантов, что можно сделать со стандартной текстурой. Измененяя текстуры, вы можете создавать такие эффекты, как волшебные звезды, дым и, конечно же, огонь.
Изменять текстуру частиц довольно легко. До сих пор, частицы были нарисованы на экране с помощью материала Default-Particle который является материалом частиц с круговой градиентной текстурой:
Чтобы изменить материал, выберите игровой объект TorchFireParticles внутри Иерарархии. Затем найдите компонент системы частиц в Инспекторе, и откройте модуль Renderer системы частиц.
Откройте папку Materials в окне проекта и перетащите FireMaterial Material в свойство Material:
Теперь запустите сцену, чтобы увидеть вашу пользовательскую текстуру в действии:
Уже теплее, хотя, на мой взгляд, пламя слишком широкое. Чтобы исправить это, нам придется изменить форму системы частиц.
Изменение формы системы частиц
Модуль Shape, как следует из названия, управляет формой и поведением частиц в этой форме. Вы можете выбрать одну из нескольких различных форм, каждая из которой имеет свои собственные специфические настройки. Это позволяет создать частицы в «ящике», сфере или вообще в чем угодно другом.!
Разверните модуль Shape в Инспекторе:
Форма shape вашей системы частиц установлена как конусообразная (cone), что означает, что частицы появляются у основания (base) и двигаются с заданным углом (angle).
В приведенном выше примере, основание окрашено в синий цвет, угол – зеленый, а частицы – красные. Обратите также внимание на то, что пока у вас открыт модуль форм (Shape Module), вам доступен удобный предпросмотр создаваемого конуса:
Изменение угла Angle изменяет и размер конуса, делая его шире или уже. Установите его значение равным 10
и вы получите хороший плотный огонь, который слегка расширяется по мере роста частицы.
Изменение радиуса Radius изменяет размер основания; чем выше значение, тем больше частицы будут разбрасываться с появлением. Установите это значение в 0.2
; это обеспечит то, что огонь будет исходить из нужного места на факеле.
Запустите вашу сцену и посмотрите, как изменилась форма пламени:
Это уже больше похоже на настоящий огонь! Завершающим штрихом является изменение размера частиц в течение их жизни.
Изменение размера со временем
С помощью модуля Size over Lifetime вы можете создавать частицы, которые уменьшаются или увеличиваются в течение их жизни, или даже пульсируют как светлячки в лесу.
Найдите Size over Lifetime в списке модулей систем частиц. В отличие от предыдущих модулей, он по умолчанию отключен. Нажмите на флажок рядом с именем модуля, чтобы включить его:
Откройте модуль Size over Lifetime, кликнув по его названию. Откроется темно-серое окошко с плоской линией наверху:
Кликните на темно-серый фон, чтобы открыть редактор кривых в нижней части инспектора. На горизонтальной оси показана жизнь частицы, в то время как вертикальная ось отображает ее размеры:
Вы можете перемещать ключи на обоих концах красной линии для редактирования кривой. Вы также можете добавить дополнительные ключи, дважды щелкнув в любом месте на кривой. Чтобы удалить ключи, щелкните правой кнопкой мыши на ключ, чтобы удалить и выберите Delete Key.
Вы можете также выбрать одну из предустановленных кривых в нижней части:
Чтобы сделать огонь более похожим на настоящий, выберите третью справа преднастройку, чтобы создать линию, идущую вниз:
Запустите сцену, чтобы увидеть свой эффект во всей своей огненной славе!
Если вы работали в основной форме с Animations, давайте теперь посмотрим, как можно создать реалистичные дрожащие тени! Как создать дрожащие тени? Очень просто:
- Отключите Directional Light (Направленный свет) в Иерархии.
- Добавьте Point Light (Точечный свет) к центру частиц пламени
(0, 0, 4)
.
- Сделайте Color (Цвет) слегка оранжевым (HEX-значение FFC68AFF).
- Установите Range (Диапазон) в
50
.
- Установите Intensity (Интенсивность) в
3
.
- Добавьте Animation и сохраните ее где-нибудь в папке Assets.
- Присвойте анимацию Animation, которую вы только что создали, к Point Light.
- Откройте Animation Window.
- Выберите Point Light (Точечный свет).
- Установите Shadow Type в
Hard Shadows
.
- Установите Samples в
50
.
- Через каждые несколько кадров добавляйте ключевой кадр keyframe и слегка двигайте Point Light (точечный свет) по осям X и Y. Нет никаких стандартов и норм, просто попытайтесь подобрать максимально реалистичные параметры.
- Запустите сцену.
Вот, что примерно должно получиться:
Мои поздравления! Вы узнали как создать новую систему частиц и подчинили ее своей воле, делавв красивый эффект пылающего огня в факеле. Сделайте перерыв, а затем вернитесь, чтобы научиться создавать эффекты взрыва в Unity!