1. Вики
  2. /Частицы
  3. /Компоненты эмиттера

Компоненты эмиттера

Все компоненты эмиттера частиц Minecraft Bedrock в одном месте: настройка, частота появления, время жизни и форма, с полями и короткими примерами.

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

Впервые работаете с частицами? Начните с гайда Ваша первая частица, где шаг за шагом собирается рубиновое мерцание.

Что нужно каждому эмиттеру

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

Большинство числовых полей на этой странице принимают либо обычное число, либо строку Molang вроде "math.random(1, 3)". В таблицах указано, когда вычисляется поле: один раз при запуске эмиттера, на каждый цикл или на каждую частицу при её появлении.

Настройка

Эти компоненты срабатывают до того, как что-либо появится. Их можно использовать вместе с любыми другими компонентами.

КомпонентЧто делаетГлавные поля
minecraft:emitter_initializationВыполняет Molang на эмиттере, чаще всего чтобы задать свои переменные, которые потом читают другие поляcreation_expression: выполняется один раз при запуске эмиттера. per_update_expression: выполняется при каждом обновлении
minecraft:emitter_local_spaceДля эффектов, прикреплённых к мобу: выбрать, двигаются ли частицы вместе с мобом или остаются там, где появилисьposition, rotation, velocity (все true или false, по умолчанию false)

Задание переменных

emitter_initialization - то самое место, где можно один раз выбрать случайное число и поделиться им со всеми частицами:

RP/particles/ruby_sparkle.json (внутри components)
"minecraft:emitter_initialization": {
  "creation_expression": "variable.ruby_hue = math.random(0.2, 0.4);"
}

Теперь каждая частица этого эмиттера может читать variable.ruby_hue, например в своём оттенке.

Локальное пространство

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

  • position: true заставляет частицы двигаться вместе с мобом. Используйте это для свечения, которое должно оставаться вокруг него.
  • rotation: true ещё и поворачивает их вместе с мобом. Работает только вместе с position: true.
  • velocity: true добавляет скорость моба к каждой новой частице, поэтому искры от бегущего моба летят вперёд.
RP/particles/ruby_aura.json (внутри components)
"minecraft:emitter_local_space": {
  "position": true,
  "rotation": true
}

Только для прикреплённых эффектов

Локальное пространство ничего не делает для эффектов, запущенных через /particle или скриптом в какой-то точке мира. Оно важно, только когда эффект проигрывает моб или прикрепляемая модель (attachable).

Частота

Частота решает, сколько частиц появляется и как быстро. Выберите один компонент.

КомпонентЧто делаетГлавные поля
minecraft:emitter_rate_instantСоздаёт группу частиц в один момент, как вспышкуnum_particles (по умолчанию 10, на каждый цикл)
minecraft:emitter_rate_steadyСоздаёт частицы одну за другой в ровном темпеspawn_rate: частиц в секунду (по умолчанию 1). max_particles: максимум живых одновременно (по умолчанию 50)
minecraft:emitter_rate_manualСам ничего не создаёт. Игра создаёт частицы по одной, когда они ей нужныmax_particles (по умолчанию 50)

Instant: вспышка

Внутри components
"minecraft:emitter_rate_instant": {
  "num_particles": 12
}

Если эмиттер зациклен, вспышка повторяется в начале каждого цикла.

Steady: поток

Внутри components
"minecraft:emitter_rate_steady": {
  "spawn_rate": 20,
  "max_particles": 40
}

Здесь создаётся 20 частиц в секунду, но новые перестают добавляться, пока живы 40 штук. max_particles - это защитный лимит: держите его невысоким, потому что сотни частиц могут тормозить слабые телефоны.

Manual: для событий

emitter_rate_manual используют встроенные эффекты, которые игра создаёт по одной частице, например брызги дождя. В своих эффектах вы будете использовать его в основном для маленьких эффектов, которые другие эффекты запускают событием типа particle (см. события). Для всего, что вы запускаете сами, используйте instant или steady.

Время жизни

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

КомпонентЧто делаетГлавные поля
minecraft:emitter_lifetime_onceСрабатывает один раз и удаляетсяactive_time: сколько секунд создаёт частицы (по умолчанию 10)
minecraft:emitter_lifetime_loopingРаботает, делает паузу, снова работает, пока его что-нибудь не удалитactive_time: секунд работы (по умолчанию 10). sleep_time: секунд паузы между циклами (по умолчанию 0)
minecraft:emitter_lifetime_expressionВключается и выключается по Molang, который проверяется каждый кадрactivation_expression: создаёт частицы, пока это не 0 (по умолчанию 1). expiration_expression: удаляет эмиттер, как только это не 0 (по умолчанию 0)
minecraft:emitter_lifetime_eventsВызывает ваши события в определённые моменты жизни эмиттераcreation_event, expiration_event, timeline, travel_distance_events, looping_travel_distance_events

Once

Лучший выбор для разового эффекта из команды или скрипта:

Внутри components
"minecraft:emitter_lifetime_once": {
  "active_time": 1
}

С emitter_rate_instant вспышка происходит в самом начале, поэтому active_time может быть коротким.

Looping

Внутри components
"minecraft:emitter_lifetime_looping": {
  "active_time": 2,
  "sleep_time": 3
}

Этот эффект мерцает 2 секунды, отдыхает 3 и повторяется. Используйте зацикливание для эффектов, прикреплённых к мобу или запущенных из контроллера анимаций: там игра сама удалит эмиттер, когда моб или состояние исчезнут.

Expression

Отлично подходит для эффектов, которые следуют за мобом и сами включаются и выключаются:

Внутри components
"minecraft:emitter_lifetime_expression": {
  "activation_expression": "query.ground_speed > 0.1",
  "expiration_expression": 0
}

Этот эффект мерцает, только пока моб идёт, и никогда не удаляется сам. Запросы вроде query.ground_speed читают данные моба, к которому прикреплён эффект.

События

emitter_lifetime_events ссылается на имена из блока events того же файла. Каждое поле принимает одно имя события или список имён.

Внутри components
"minecraft:emitter_lifetime_events": {
  "creation_event": "flash",
  "expiration_event": "pop",
  "timeline": {
    "0.5": "twinkle",
    "1.0": ["twinkle", "chime"]
  },
  "travel_distance_events": {
    "4.0": "dust"
  },
  "looping_travel_distance_events": [
    { "distance": 1.0, "effects": ["dust"] }
  ]
}
ПолеСрабатывает
creation_eventКогда эмиттер запускается
expiration_eventКогда эмиттер заканчивает работу. Не ждёт, пока исчезнут его частицы
timelineВ указанные моменты, в секундах. Повторяется на каждом цикле
travel_distance_eventsОдин раз, когда эмиттер в сумме сдвинулся на столько блоков
looping_travel_distance_eventsСнова и снова, каждый раз, когда эмиттер сдвигается на столько блоков. Идеально для следов или шлейфа за снарядом

Форма

Форма решает, где появляется каждая частица и куда она направлена. Именно вдоль этого направления её толкает particle_initial_speed. Выберите один компонент.

КомпонентГде появляются частицыГлавные поля
minecraft:emitter_shape_pointВсе в одной точкеoffset, direction
minecraft:emitter_shape_sphereВнутри шара или на его поверхностиradius (по умолчанию 1), offset, surface_only, direction
minecraft:emitter_shape_boxВнутри коробки или на её поверхностиhalf_dimensions, offset, surface_only, direction
minecraft:emitter_shape_discНа плоском круге или на его краюradius (по умолчанию 1), plane_normal, offset, surface_only, direction
minecraft:emitter_shape_customТам, где скажет ваш Molangoffset, direction
minecraft:emitter_shape_entity_aabbВнутри коробки вокруг моба, к которому прикреплён эффектsurface_only, direction

Общие поля форм

ПолеЧто делает
offsetСмещает точку появления от эмиттера, как [x, y, z] в блоках. Вычисляется на каждую частицу, поэтому Molang здесь может разбросать их
directionКуда направлены новые частицы. "outwards" (от центра, по умолчанию), "inwards" (к центру) или своё [x, y, z]
surface_onlytrue создаёт частицы только на поверхности формы, а не внутри. По умолчанию false

Формы point и custom принимают только направление [x, y, z], потому что у них нет центра, от которого можно направлять.

Точка (point)

Внутри components
"minecraft:emitter_shape_point": {
  "offset": [0, 0.5, 0],
  "direction": [0, 1, 0]
}

Каждая частица появляется на полблока выше эмиттера и направлена прямо вверх.

Сфера (sphere)

Внутри components
"minecraft:emitter_shape_sphere": {
  "radius": 0.5,
  "surface_only": true,
  "direction": "outwards"
}

Полый шар из искр, который разлетается в стороны. Попробуйте "inwards" с коротким временем жизни, чтобы получить эффект «накопления силы».

Коробка (box)

Внутри components
"minecraft:emitter_shape_box": {
  "offset": [0, 0.5, 0],
  "half_dimensions": [0.5, 0.5, 0.5],
  "direction": [0, 1, 0]
}

half_dimensions отмеряется от центра, поэтому 0.5 с каждой стороны заполняет ровно один блок. Хорошо подходит для эффекта на весь блок, например для светящейся руды.

Диск (disc)

Внутри components
"minecraft:emitter_shape_disc": {
  "radius": 1.5,
  "plane_normal": "y",
  "surface_only": true,
  "direction": "outwards"
}

plane_normal - ось, куда смотрит диск. "y" (по умолчанию) кладёт его плашмя, как коврик, а "x" и "z" ставят вертикально, как стену. Можно указать и своё [x, y, z]. Этот пример создаёт на земле кольцо, которое расходится в стороны: красивый эффект приземления.

Своя форма (custom)

Внутри components
"minecraft:emitter_shape_custom": {
  "offset": [
    "math.random(-0.1, 0.1)",
    "math.random(0, 2)",
    "math.random(-0.1, 0.1)"
  ],
  "direction": [0, 1, 0]
}

В своей форме вы сами вычисляете точку как [x, y, z]. Здесь каждая частица появляется на случайной высоте до 2 блоков, но по бокам остаётся близко к центру: получается тонкий столб искр, похожий на луч света. Каждое значение заново вычисляется для каждой частицы.

Коробка сущности (entity box)

Внутри components
"minecraft:emitter_shape_entity_aabb": {
  "surface_only": false,
  "direction": [0, 0.2, 0]
}

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

Полный эмиттер

Соберём по одному компоненту из каждой группы. Эта аура работает по кругу, пока рядом есть моб, и держится на нём:

RP/particles/ruby_aura.json (внутри components)
"minecraft:emitter_local_space": {
  "position": true,
  "rotation": false
},
"minecraft:emitter_lifetime_looping": {
  "active_time": 1
},
"minecraft:emitter_rate_steady": {
  "spawn_rate": 8,
  "max_particles": 20
},
"minecraft:emitter_shape_entity_aabb": {
  "surface_only": true,
  "direction": [0, 1, 0]
}

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

We use cookies to improve your experience and analyse site traffic. Learn more