Unity2D Particle System - рандомизирующий слой или значение Z-преобразования для появления перед / позади / того же слоя, что и другие игровые объекты

В настоящее время я работаю над своей погодной системой для игрового проекта 2D Unity. То, что я пытаюсь сделать, - это рандомизировать, на каком слое будет появляться частица, так что иногда она будет появляться позади других спрайтов, таких как игрок или здания, иногда впереди, а иногда сталкиваться с ними (в том же слое).

Я относительно новичок в системе частиц в целом, но после долгих тренировок достиг своих целей, кроме этой.

Я в основном хочу иметь возможность рандомизировать каждую частицу, чтобы иметь, например, значение Z -1, 0 или 1, при этом игрок / другие объекты потенциально находятся в 0, где частицы будут сталкиваться с ними. Чтобы визуализировать, вот поведение, которое у меня сейчас есть, когда каждая частица сталкивается с объектами, когда я хочу примерно 1/3: https://i.imgur.com/vplFcye.gifv

Возможно, вместо того, чтобы работать с позиционными значениями Z, я, возможно, должен больше думать о слоях? Рандомизация слоя, на котором появляются частицы, и, следовательно, то, с чем они могут взаимодействовать, но в любом случае я не могу найти способ написать сценарий или установить в инспекторе возможность изменить это значение layer / z.

Я подумал об использовании трехчастичных систем, которые, по моему мнению, могли бы достичь моих целей, но не являются идеальными и потенциально могут нанести ущерб производительности?

Если у кого-то есть понимание, возможно, я просто пропустил действительно очевидную переменную / настройку даже в инспекторе.

Благодарю.

Всего 1 ответ


Возможно, это не самое элегантное решение для этого, но вы можете установить для своей формы Emission значение Mesh, Type to Edge и использовать пользовательскую сетку, состоящую из 3 отдельных прямоугольников, по одному для переднего / заднего / среднего слоя. Я проверил это, и, кажется, работает хорошо:

Трехгранная система

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


Есть идеи?

10000