Я хотел бы поместить несколько систем частиц с соответствующими полями в одну сцену и переключаться между ними. Поля должны взаимодействовать только с конкретными системами частиц. Я не могу сделать это с помощью Xcode SceneKit Document Builder.
Согласно документации Apple:
Чтобы определить, влияет ли поле на физическое тело, SceneKit выполняет побитовую операцию И над битовой маской категории поля и свойством categoryBitMask тела. Если результатом является ненулевое значение, SceneKit вычисляет и применяет силу поля к телу. Чтобы определить, влияет ли поле на частицы, порожденные объектом SCNParticleSystem, SceneKit выполняет ту же проверку, используя свойство categoryBitMask узла, содержащего систему частиц.
Используйте это свойство для создания полей, которые влияют только на определенные тела в вашей сцене. Уменьшение количества тел, на которые воздействуют поля, также может улучшить производительность моделирования.
Я создал простой файл сцены, который содержит:
- Линейное гравитационное поле. Это битовая маска категории, установленная на 2 в Инспекторе узлов.
- узел. Это битовая маска категории, установленная в 4 в Инспекторе узлов.
- Система сферических частиц внутри вышеуказанного узла. Влияет на выбранные поля физики. Битовая маска категории, оставленная в 1 в Инспекторе узлов.
Не имеет значения, для чего я установил битовые маски категории. Физическое поле всегда взаимодействует с системой частиц. Я также попытался установить битовые маски программно на игровой площадке в отдельный файл с 3 системами частиц с одним полем для каждой системы, но безуспешно. Использование:
let effect1Mask = 0x1 << 1
let effect2Mask = 0x1 << 2
let effect3Mask = 0x1 << 3