Here's a quick tutorial to show you how to use Niagara's landscape interface to drive particles based on your landscape(s). Files are available as a Tier 1 reward on my Patreon: https://www.patreon.com/GhislainGir
Quick demo.
You can make particles closely follow the landscape to create environmental effects.
Or you could build a more intricate effect based on velocity and have your particles be pushed by wind and follow the curves of the landscape and watch them blast into the air after a steep slope.
You can also create a custom drag effect where particles loose momentum when they collide with the landscape.
Emitter is quite easy to understand and uses only a couple of custom modules.
Here I set the ground distance a particle will try to maintain.
I project all spawned particles at birth on the landscape at that desired distance.
Then when a particle is updated we check if it's below its desired distance to the ground and how far it is to the ground.
Clamp the particle's Z position based on its minimum desired distance to the ground so it never goes below that. This acts as a hard collision.
Here the particle's velocity is projected onto the ground's normal if close enough to it.
Here we control the direction the sprite is facing. The closer it is to the ground, the more it follows the ground's orientation. Else it's alignment is based on its velocity so particles in the air are free to orient themselves however they see fit