Hey all! I’m using a point attraction force to make particles animate from the system position (static) to an object that the player holds in VR. I want the particles to follow the object pretty tightly, so I’ve tweaked the falloff exponent so that the attraction force increases the closer it gets to the object. However, This causes a good deal of overshoot due to the strong forces. Is there any way I can adjust this, or keep a consistent connection line between the sprites and the object? Thanks!
Gif Link
Unfortunately similar to many velocity/force modules of Niagara which are meant to simulate realistic physics, there is no easy way to artificially prevent the overshooting while maintaining a good amount of particle momentum. (IRL the vehicle which is getting closer to the target would be manually braking before crushing into the target.)
The simplest solution is to ditch velocity altogether and directly set the Particles.Position by lerping between the starting position and the target position in Particle Update stage. This is the cheapest and most painless method.
Gotcha, though I need there to be some sort of wiggle in the middle, the lerp would be too static. Any idea how I could have forces still apply to the middle whilst keeping the end of the ribbon in place? (Also, to make things extra confusing, we can’t use beams in the project)
(I am not by my pc so I can’t do any screen cap and some glossary may be bit off.)
Simply put, if you are really after the velocity method, think like an actual pilot of a vehicle, which is the particle. The first thing you need is to cache the distance (a float value) between each particle and the destination every frame in Particle Update stage, preferably right under the Particle State module. This can be easily done by using the built-in dynamic input “Distance between 2 Positions”.
Then in your Attraction module, change the attraction strength to a curve, set the curve index as the division of the distance from destination by the distance you want it to lose the attraction force. The curve itself can be a simple 2-key linear line with (0.9,0) and (1,1).
Without any drag, the particle will continue to travel even after losing the attraction force, so you will need to add a Drag module after the Attraction module, change the linear drag to a curve. The curve index is the same as above, perhaps adjust the divisor (braking distance) if needed, but the curve is something like (0.5,1) and (1,0), which means greater braking force the closer the particle approaches the destination. Increase the scale curve as needed.
Keep in mind that this setup is too simple to guarantee a perfect stop at the destination, not to mention that your destination seems to be constantly moving which complicates the matter.