Плагин для Unity ~ 22,85 Мб
Обращаем ваше внимание, что это самая первая версия плагина, поэтому возможно, что пока не всё гладко. Но нужно же когда-то начинать. Пока плагин работает только с 3D-версией Magic Particles, но предполагается, что 2D тоже вскоре появится. Сообщения об ошибках и пожелания приветствуются.

Возможности плагина

  • Сам по себе плагин является полностью бесплатным, но как обычно для коммерческих проектов необходимо лицензировать API. Плагин позволяет использовать всю мощь и красоту эффектов MagicParticles в Unity.

  • Визуальный редактор Unity позволяет расставлять объекты по игровой сцене. Плагин Magic Particles разработан так, чтобы Unity мог работать со спецэффектами Magic Particles по аналогии с собственными объектами. Также возможна загрузка/удаление эффектов в реальном времени уже в релизе.

  • Плагин работает под Windows и Mac OS, а также поддерживает широкий спектр игровых платформ для релиза.

  • Плагин написан на языке C#, но для своей работы использует API Magic Particles с интерфейсом на языке C. Все функции API экспортируются в C# с помощью файла magic.cs.

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

Начало

Понятно, что для начала нужно установить Unity и скачать плагин Magic Particles. Плагин поставляется в виде файла типа unitypackage, который необходимо импортировать в свой проект. Откройте проект и выполните следующие действия:

  • Assets->Import Package->Custom Package
  • В открывшемся окне выбираем плагин MagicParticles.unitypackage
  • Будет показан список файлов, который будет добавлен/заменен после выполнения импорта
  • Соглашаемся с этим, и плагин добавляется в проект
В папке плагина Assets\MagicParticles\Examples имеется несколько простых демосцен, которые можно посмотреть. В этих демосценах несколько уже созданных спецэффектов, которые можно подвигать по сцене, чтобы посмотреть, как всё это работает.



Чтобы начать действовать "с нуля", выполните GameObject->MagicParticles. У вас появится 2 новых объекта MagicHost и NewMagicEmtiter. Объект MagicHost является ядром плагина и обычно существует единственном экземпляре, поэтому повторное нажатие GameObject->MagicParticles приведет только к созданию нового объекта NewMagicEmtiter, который и является спецэффектом.



Свойства MagicHost

MagicHost содержит общие для всех эмиттеров настройки, а также является хранилищем всех ptc-файлов, которые в свою очередь содержат доступные спецэффекты.



Так как MagicHost - это объект, который только управляет другими эмиттерами, то на него не действует стандартная трансформация Unity. Свойство Animate emitters управляет анимацией эмиттеров на сцене и может принимать следующие значения:

  • Always - все эмиттеры анимируются всегда
  • Selected - все эмиттеры анимируются в случае, если выделен какой-то эмиттер или MagicHost
  • Only Selected - анимируется только выделенный эмиттер
  • Stop - эмиттеры не анимируются

Свойство Use camera выбирает камеру для визуализации спецэффекта. Большинство 3D-эмиттеров для правильной отрисовки должны знать положение камеры, так как часто частицы ориентируются на камеру. Также бывает ситуация, когда частицы рисуются по в порядке от дальних к ближним, что тоже должно учитывать положение камеры. Проблема в том, что Unity использует 2 камеры - одну для редактора, а вторую для игры. Редактировать сцену, естественно, удобнее, когда основной является камера редактора, а наблюдать результат лучше через камеру для игры.

  • from Game - камера игры
  • from Editor - камера редактора
  • Auto - в режиме редактирования используется камера редактора, а при нажатии на Play включается камера игры

Свойство Show names выбирает способ, которым будут показываться имена эмиттеров в списке:

  • Name - только имя спецэффекта
  • PTC+Name - имя файла + имя спецэффекта
  • PTC+Path+Name - имя файла + путь к эмиттеру внутри файла + имя спецэффекта

Свойство Sort emitters позволяет сортировать имена эмиттеров по алфавиту.

Поле Drag&drop ptc file является самым важным, так как оно позволяет загружать ptc-файлы, из которых потом могут проигрываться эмиттеры. Если список ptc-файлов пуст, то это означает, что эмиттеры для проигрывания отсутствуют. Кнопочка позволяет выбрать имеющиеся ptc-файлы из списка. Также есть возможность перетаскивать на это поле нужные файлы прямо из области ресурсов.

Информация о загруженных файлах показывается в таком виде:



В данном случае показано, что загружено 2 файла с именами 3d_vfx_api.ptc и 3d_ktl4.ptc. Эти файлы используют 25 текстурных атласов и 15 материалов.

Кнопка Reload all выполняют перезагрузку всех данных, относящихся к плагину.

Кнопка Reset static atlases сбрасывает настройки используемых текстурных атласов в состояние Automatic Truecolor, которое максимально подходит для визуализации частиц. Дело в том, что пользователь в Unity имеет полный контроль за текстурами и может исправлять их настройки, как ему захочется. Но для текстурных атласов использование MipMap или компресии может иметь нехорошие последствия, что обычно выражается в появлении полос по краям частиц в зависимости от расстояния до камеры. Обратите внимание, что плагин считает, что все используемые спецэффектами текстуры должны находиться в папке Resources/mp_textures.
Также существует ситуация, когда текстуры могут храниться внутри ptc-файлов вместе со спецэффектами. В этом случае генерация текстурных атласов будет выполняться автоматически в памяти компьтера.

Свойства эмиттера

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



Кнопка Restart перезапускает эмиттер с начала.

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

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

Поле Automatical playback in game позволяет воспроизвести эмиттер в игре. Иначе эмиттер будет создан, но не будет проигрываться.

Поле Animate in editor включает анимацию эмиттера в редакторе. На игру данное поле не оказывает никакого влияния.

Поле Loop позволяет зациклить эмиттер, т.е. исполнять его бесконечно.

  • No - эмиттер не зациклен.
  • To start - эмиттер зациклен на начало.
  • To end - эмиттер зациклен на конец.

Поле Action on End позволяет определить действие, которое произойдет с объектом, после того, как проигрывание эффекта будет завершено:

  • Stop - эмиттер больше не воспроизводится, но остается в памяти и может быть в любой момент воспроизведен заново.
  • Disable - эмиттер больше не воспроизводится, а относящийся к нему GameObject деактивируется. Следует использовать в случае, когда эмиттер понадобится нескоро.
  • Destroy - эмиттер и относящийся к нему GameObject уничтожаются.
  • Restart - эмиттер перезапускается с начала.
Обратите внимание, что зацикленный эмиттер в редакторе никогда не завершается. Но в игре можно управлять эмиттером как угодно, например, функция Magic_SetInterrupt() позволяет "мягко" прервать работу эмиттера - новые частицы перестают создаваться, а старые продолжают существовать.

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

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

  • No - ограничитель отсутствует.
  • Parallelepiped - ограничитель в форме параллелепипеда.
  • Sphere - ограничитель в форме сферы.

Поле Bounding sphere показывает ограничивающую сферу для спецэффекта. Не выполняет никаких действий.

Поле 3D - признак того, что это настоящий 3D-эмиттер, а не 2D-эмиттер на плоскости.

Поле Particles - количество визуализируемых частиц в эмиттере.

Поле DIP - количество проходов, которое требуется для рисования эмиттера. Чем меньше DIP-ов, тем это лучше для FPS.

Поле Time position показывает текущую и максимальную позиции анимации эмиттера.

Настройка столкновений с препятствиями и событий

Для полноценной работы с событиями, необходимо воспользоваться редактором Magic Particles, который позволяет определять реакцию на столкновение, магнетизм и уничтожение частицы. В плагине же основной задачей была необходимость в выборе препятствий и реакция частиц на столкновение с ними. Эта реакция описывается не для эмиттера, а для типов частиц, которых в одном эмиттере может быть несколько. Для нужного типа частиц нужно нажать New event, выбирать в списке Collision и затем препятствие, с которым будет выполняться столкновение. Препятствиями могут выступать только Cube и Sphere. Реакция на столкновение может быть следующей:

  • Event - передать сообщение в игру о столкновении частицы с препятствием.
  • Destruction - уничтожить частицу в момент столкновения.
  • Detaching - частица перестает двигаться.
  • Reflection - частица отскакивает от препятствия.

Все другие действия кроме Collision имеют только вариант Event.