The goal I’m trying to achieve is to have some small particles falling from a moving character, that fall then bounce a little on the ground. I started learning about Niagara to do this.
To cut straight to the question:
a) Should I be using Niagara to achieve my simple goal (of particles falling then bouncing off a curved ground)?
b) If yes, how? Even this basic test looks unusably inaccurate. (Should I perhaps forget about collision and just fake it?)
c) If no, what’s a better approach I should look into?
Here’s a really basic example of particles spawning, falling, and bouncing off a spherical ground (pawn is moving left):
But here’s the problem I’m getting:
Semi-randomly, the green mesh particles start spawning higher and higher. They’ll linger up there for a few seconds, sometimes even angling off in another direction. It occurs more the faster the pawn moves, and occurs more the closer it is to the ground. Clearly it’s connected to collision, and the problem goes away if I simply disable collision in the particles, or even if I use a flat ground.
But it can also occur for seconds at a time when the pawn is stationary, with a very clear space between it and the ground. Not to mention that the particles cannot spawn closer than a full metre to the ground, due to how I’ve set up this test.
For a basic test, I:
- … made a Particle System with an empty Emitter, and gave it Mesh Renderer, Spawn Rate, Gravity Force, and Collision. I set the mesh to a default sphere, set Spawn Rate to 100, and in Initialize Particle I set Lifetime to 5 seconds and Mesh Uniform Scale to 0.1. Everything else is left with default settings.
- … created a Pawn (“BP_Flyer”) with some basic motion.
- … put a default Sphere in the level and scaled it up by 100, to act as the curved ground.
To be exceedingly generous with distances, the Pawn’s centre is always at least 50cm above the sphere’s surface (I didn’t connect a control to move it any lower). Then the Emitter’s position is another 50cm above that.
I set the sphere’s collision to block only to the channel that the colliding particles are tracing with (WorldDynamic). Everything else that could produce collision (ie, the meshes in the pawn) has had its collision disabled.
Any suggestions for either defeating this issue with Niagara, or doing things a better way altogether?