Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Встроенная система частицКомпонент, который имитирует текучие объекты, такие как жидкости, облака и пламя, путем создания и анимации больших количество небольших 2D-изображений в сцене. Подробнее
См. в Словарь
. Модуль триггеров позволяет получить доступ и изменять частицы на основе их взаимодействия с одним или несколькими коллайдераминевидимая форма, используемая для обработки физических столкновений объекта. Коллайдер не обязательно должен быть точно такой же формы, как сетка объекта — грубое приближение часто бывает более эффективным и неразличимым в игровом процессе. Подробнее
См. в Словарь
в СценаСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь
. Когда вы включаете этот модуль, система частиц вызывает обратный вызов OnParticleTrigger() для прикрепленных скриптовКусок кода, позволяющий создавать собственные Компоненты, запускать игровые события, изменять свойства Компонентов с течением времени и реагировать на действия пользователя любым удобным для вас способом. Подробнее
См. в Словарь
, который можно использовать для доступа к спискам частиц в зависимости от того, где они относятся к коллайдерам в сцене.

Модуль триггеров систем частиц
Модуль триггеров систем частиц

Использование модуля «Триггеры»

Для начала укажите, с какими коллайдерами в сцене могут взаимодействовать частицы. Для этого назначьте один или несколько коллайдеров свойству списка Коллайдеры. Чтобы увеличить количество коллайдеров в списке, нажмите кнопку «Добавить» (+) под списком коллайдеров. Чтобы удалить коллайдер из списка, выберите коллайдер и нажмите кнопку «Удалить» (-). Если вы еще не назначили коллайдер индексу списка, вы можете использовать меньшую кнопку «Добавить» (+) справа от пустой записи, чтобы создать и назначить новый коллайдер. Это создает новый GameObjectосновной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. . Функциональность GameObject определяется прикрепленными к нему компонентами. Подробнее
См. в Словарь
как дочерний элемент системы частиц и присоединяет Сферический коллайдерКомпонент коллайдера в форме сферы, который обрабатывает столкновения для игровых объектов, таких как мячи или другие объекты, которые можно приблизительно представить как сфера для целей физики. Подробнее
См. в Словарь
его, затем назначает коллайдер пустой записи.

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

  • Внутри: частица находится внутри коллайдера.
  • Снаружи: частица находится за пределами коллайдера.
  • Вход: частица входит в границы коллайдера.
  • Выход: частица выходит за пределы коллайдера.

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

  • Обратный вызов: позволяет получить доступ к частице в функции обратного вызова OnParticleTrigger().
  • Убить: Уничтожает частицу. Вы не можете получить доступ к частице в функции обратного вызова OnParticleTrigger().
  • Игнорировать: игнорирует частицу. Вы не можете получить доступ к частице в функции обратного вызова OnParticleTrigger().

Доступ к частицам в OnParticleTrigger()

Если вы выберете Обратный вызов в качестве реакции на одно из триггерных событий, вы сможете получить доступ к частицам, которые удовлетворяют условию события, из прикрепленного скрипта. Для этого сначала нужно добавить функцию OnParticleTrigger() в прикрепленный скрипт. Внутри этой функции вызовите функцию ParticlePhysicsExtensions.GetTriggerParticles(), чтобы получить список частиц, которые соответствуют критериям триггерного события. Эта функция принимает ParticleSystemTriggerEventType, который определяет событие триггера, для которого вы хотите получить частицы (Inside, Outside, Enter или Exit) и список ЧастицыНебольшое простое изображение или сетка, испускаемая системой частиц. Система частиц может отображать и перемещать частицы в большом количестве, чтобы представить жидкую или аморфную сущность. Эффект всех частиц вместе создает впечатление цельного объекта, такого как дым. Подробнее
См. в Словарь
, который функция заполняет результатом. Из списка вы можете получить доступ, изменить или уничтожить любую частицу. Функция также может принимать необязательный параметр, который выводит collisionСтолкновение происходит, когда физический движок обнаруживает, что коллайдеры двух игровых объектов соприкасаются. или перекрываются, когда хотя бы один имеет компонент Rigidbody и находится в движении. Подробнее
Просмотрите в Словарь
информацию, например, какой коллайдер активировал каждую частицу. Свойство Режим запроса коллайдера определяет, какая информация доступна через этот параметр.

Дополнительную информацию об API и способах его использования см. в примере ниже.

Свойства

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

Свойства Описание
Inside Определяет действие, которое система частиц выполняет для частиц в каждом кадре, в котором они находятся внутри коллайдера. Возможные варианты:
Обратный вызов: добавляет частицу в список, который можно получить с помощью обратного вызова OnParticleTrigger()
Убить: уничтожает частицу.
Игнорировать: игнорирует частицу.
Outside Определяет действие, которое система частиц выполняет для частиц в каждом кадре, когда они находятся вне коллайдера. Возможные варианты:
Обратный вызов: добавляет частицу в список, который можно получить с помощью обратного вызова OnParticleTrigger()
Убить: уничтожает частицу.
Игнорировать: игнорирует частицу.
Enter Определяет действие, которое система частиц предпринимает для частиц в кадре, в который они входят в коллайдер. Возможные варианты:
Обратный вызов: добавляет частицу в список, который можно получить с помощью обратного вызова OnParticleTrigger()
Убить: уничтожает частицу.
Игнорировать: игнорирует частицу.
Exit Определяет действие, которое система частиц предпринимает для частиц в кадре, в котором они покидают коллайдер. Возможные варианты:
Обратный вызов: добавляет частицу в список, который можно получить с помощью обратного вызова OnParticleTrigger()
Убить: уничтожает частицу.
Игнорировать: игнорирует частицу.
Collider Query Mode Определяет метод, который эта система частиц использует для получения информации о коллайдерах, с которыми взаимодействуют частицы. Это увеличивает ресурсоемкость обработки модуля Triggers, поэтому, если вам не нужна дополнительная информация о столкновениях, установите для этого свойства значение Disabled. Возможные варианты:
Отключено: не получает никакой информации о том, с каким коллайдером взаимодействует каждая частица.
One: получает информацию о первом коллайдере, с которым взаимодействует каждая частица. Если частица взаимодействует с несколькими коллайдерами в кадре, возвращается первый коллайдер в списке коллайдеров, с которым взаимодействовала частица.
Все: получает информацию о каждом коллайдере, с которым взаимодействует каждая частица.
Radius Scale Границы коллайдера частицы. Это позволяет более точно сопоставить границы коллайдера частицы с ее внешним видом. Это полезно, если частица круглая с исчезающей текстурой, потому что коллайдер частиц по умолчанию будет внутри триггера до того, как частица будет выглядеть визуально. Обратите внимание, что этот параметр не меняется, когда событие действительно срабатывает, но может задерживать или усиливать визуальный эффект триггера.

• Введите 1, чтобы коллайдеры частиц сохраняли одинаковый размер, а событие отображалось, когда частица касается коллайдера.
• Введите значение меньше 1, чтобы коллайдеры частиц были меньше, а триггер срабатывал после того, как частица проникает в коллайдер
• Введите значение больше 1, чтобы коллайдеры частиц были больше, а триггер срабатывал до того, как частица проникнет в коллайдер.

Visualize Bounds Указывает, отображать ли границы коллайдера каждой частицы в виде сценыинтерактивном представлении мира, который вы создаете. Вы используете Scene View для выбора и размещения пейзажей, персонажей, камер, источников света и всех других типов игровых объектов. Дополнительная информация
См. в Словарь
. Включите это свойство, чтобы отобразить границы коллайдера, и отключите его, чтобы скрыть границы коллайдера.

Примеры

Взаимодействие с коллайдером

В приведенном ниже примере частицы становятся красными, когда они входят в границы коллайдера, а затем становятся зелеными, когда покидают границы коллайдера.

using UnityEngine; using System.Collections; using System.Collections.Generic; [ExecuteInEditMode] public class TriggerScript : MonoBehaviour { ParticleSystem ps; // these lists are used to contain the particles which match // the trigger conditions each frame. List enter = new List(); List exit = new List(); void OnEnable() { ps = GetComponent(); } void OnParticleTrigger() { // get the particles which matched the trigger conditions this frame int numEnter = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter); int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit); // iterate through the particles which entered the trigger and make them red for (int i = 0; i < numEnter; i++) { ParticleSystem.Particle p = enter[i]; p.startColor = new Color32(255, 0, 0, 255); enter[i] = p; } // iterate through the particles which exited the trigger and make them green for (int i = 0; i < numExit; i++) { ParticleSystem.Particle p = exit[i]; p.startColor = new Color32(0, 255, 0, 255); exit[i] = p; } // re-assign the modified particles back into the particle system ps.SetTriggerParticles(ParticleSystemTriggerEventType.Enter, enter); ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit); } }

На изображениях ниже показан результат этого примера:

Вид редактора
Вид редактора
Вид игры
Вид игры

Взаимодействие с несколькими коллайдерами

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

using UnityEngine; using System.Collections; using System.Collections.Generic; [ExecuteInEditMode] public class TriggerScript : MonoBehaviour { void OnParticleTrigger() { ParticleSystem ps = GetComponent(); // particles List inside = new List(); List exit = new List(); // get int numInside = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside, out var insideData); int numExit = ps.GetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit); // iterate for (int i = 0; i < numInside; i++) { ParticleSystem.Particle p = inside[i]; if (insideData.GetColliderCount(i) == 1) { if (insideData.GetCollider(i, 0) == ps.trigger.GetCollider(0)) p.startColor = new Color32(255, 0, 0, 255); else p.startColor = new Color32(0, 0, 255, 255); } else if (insideData.GetColliderCount(i) == 2) { p.startColor = new Color32(0, 255, 0, 255); } inside[i] = p; } for (int i = 0; i < numExit; i++) { ParticleSystem.Particle p = exit[i]; p.startColor = new Color32(1, 1, 1, 255); exit[i] = p; } // set ps.SetTriggerParticles(ParticleSystemTriggerEventType.Inside, inside); ps.SetTriggerParticles(ParticleSystemTriggerEventType.Exit, exit); } }

На следующем изображении показан результат этого примера:

Вид игры
Вид игры
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3