There are a few ways to make particles die when they hit an object. Depending on your needs, a simple solution might be to enable the [Age Colliding Particles] → [Advanced Aging Rate] setting, found in the Collision module in you Particle Update stage. If you provide a sufficiently large number, your particles will advance past their lifespan upon collision.
Aside from the Distance Field setting you mentioned, I have never needed to adjust any settings outside of the Niagara Systems I build.
Given your focus on collision not function correctly, I’ve attached a screenshot of a working water jet effect. Hopefully this might help you check if maybe you are missing something.
You must have a Collision module in the Particle Update stage, and it must be immediately precede a “Solve Forces and Velocity” Module. Together, these modules should be last in the Particle Update stage.
Aside from that info, don’t assume I am taking the best approach to the effect your looking for, but the pictured setup does work for me and correctly collides with the world.
I have two “Solve Forces and Velocity” modules, one for world/particle effect physics and the other for collision physics. The settings for these modules are shown on the right-side of the screen shot.
I use this setup because the additional info for Collision Modules states that “Write to Intrinsic Properties” should only be True where CollisionValid == true, but using a single Solve Force module and tying the transient CollisionValid variable to this property seems to prevent some modules from manipulating particle velocity unless a collision is occurring.
------- Original Answer ---------
If you are trying to make particles spawn-on and stick-to walls that are only visible to the player, I would say that you are on the right track by using depth buffer operations.
These operations typically allow you to have a particle’s location interact with opaque surfaces in the viewport.
This might not be what you want if you are building a FPS game where the player has visible meshes, such as guns or hands, attached to the camera/viewport, as particles might interact these meshes undesirably.
If you are trying to have moving particles die upon leaving the bounds of a level (say for example: You have a Niagara system attached to the viewport, and the player turns against a wall, particles should not return from behind the wall), you may want to look at settings/functions in Niagara that handle occlusion, culling, and killing particles.
If you trying to have particles interact with general physics, such as bumping into walls and meshes, functions and settings that interact with the depth buffer might not be simplest or best solution, but this really depends on what your particle looks like and complexity of your scenario.
For example, if you are using a Sprite Renderer at the bottom of your Niagara system, you will likely fight with the direction the particle Sprites is facing. When placing Sprites by depth buffer operations alone, they will clip into non-parallel surfaces/geometry, because Sprites do not have a mesh to define their collision body.
Depending on the scale/count of your desired Niagara System, it might be easier/simpler to use the Mesh Renderer instead of the Sprite Renderer, as this will give your particles a defined body.
Hope this helps somehow!