I want to spawn some particles in a grad pattern but there doesn’t seem to be an option for it. There is the shape option but within the shape the position of the particles is random.
For anyone coming here from a random Google search, I figured out a relatively simple way to do this without scripting!
(for use in Asset Bundles/VRChat/Beat Saber and such)
- Set the Shape of your particle system to “Mesh” with the Type set to “Vertex”, and the Mode to “Loop”
- Drop in a Plane
- The amount of subdivisions on the plane’s mesh will control the size of the grid. For this example I used an 7x7 quad plane, for an 8x8 vert grid, totaling to 64 particle spawn points in a grid.
A 64x64 grid will be 512 particles, so you can set your limit to that.
- The amount of subdivisions on the plane’s mesh will control the size of the grid. For this example I used an 7x7 quad plane, for an 8x8 vert grid, totaling to 64 particle spawn points in a grid.
To get the particles to spawn uniformly:
- Enable looping/pre-warm, set the duration to 64, lifetime to 64, and in the “Shape” tab set the x/y scale to 100.
- Set the Emission rate to 0, then add in a Burst of 64 particles to spawn everything at once.
- Restart the particle system, pause it, and set the time to 64 (end of the duration)
- From here just balance out the “start speed” in the main settings, and “Interval” in your emission burst.
The values I ended up with were:- Start speed → 3.125
- Interval → 9.140
I’m sure there’s some math formula on how the start speed/intervals scale up or down depending on the grid size, but my smooth and slippery brain can’t figure that shit out.
It’s fairly easy to trial and error you way through though if you set all the previous stuff to match your grid size!
Assuming you set the durations/max particles correctly, and paused the time at the end of the loop (duration value):
- Start speed = Max distance / compression from end point
- Interval = Start distance (before loop) / compression from start point
How many particles do you intend to spawn? You could create your own grid and instantiate accordingly, perhaps focus on having one particle and instantiating it along your grid system, though I cant imagine having a high number of particle systems in your scene is great practice. But perhaps it’s not too intensive.