Multiple Collision Events from Single Niagara Emitter?

Hey everyone!

I hope you’re all doing well. I’ve got a quick question regarding the Niagara particle system.

I am trying to create rain, which behaves differently depending on the surface it collides with. I have successfully created a splash emitter that bounces off the collision normal of the object hit by my rain emitter. If water hits a particle surface designated as “water” I would like to generate a ripple instead of a splash.

From what I’ve seen, it isn’t possible to have multiple collision events generated by one emitter (rain), so I’m not sure how I can separate the emission of different particles. Is this possible?

I’ve got a temporary fix working in which the splash particle has its own collision with the water layer, and thus dies and generates a ripple on its collision event, but this isn’t ideal because my splash effect generates 1-4 particles. and I don’t need to be creating excess ripples at the same location. Below is an image of what I’ve done, and I’ve edited the module names for clarity:

I’ve also found that aligning the ripple sprite (unticked in the image) to the collision normal of the splash does not work, but it does work when receiving the rain’s collision event…

Any help would be greatly appreciated!

(post deleted by author)

So i have found the solution !
I know im a couple years too late, but that might help someone else hopefully.

I had the same kind of issue for a splash particle system for when the player jumps in the water.

I needed the water droplet particles to Splash out of the water and then falling back down, then, upon colliding with a surface, spawn a new particle of an animated effect :

  • If the Particle Collide with Anything but water ( ground, player…) it create a little “splash” particle

  • If the droplet collide with water, the splash particle spawns but also a little circular wave particle.

Splash :

Wave :

So basically, when the droplet collide with water, both new particles spawns, but when it collide with the floor or anything else than water, only the splash particle spawns.

Problem ; You can’t have 2 Generate collision event.

Solution ; The first emitter, the main one, will have a global collision channel, like “world dynamic” so it respond to everything.

Then, You need to spawn another particle, a “Ghost” particle on collision.
This ghost particle must spawn exactly on the collision spot of the first one, like my water droplets, it must have a short lifetime.

To spawn the ghost particle, i create a generate location event on the “droplet” emitter
but this location event must be triggered only when the droplet particle collided, so i link the parameter “Has_Collided” to : “Event generation Enabled”


that way i spawn the ghost particle only after the collision of the droplet.

On The Ghost particle, i create a recieve location event coming from the Droplet Emitter.

to spawn the ghost particle only once, remove all kind of spawn modules and set it like so ;

You should start to understand where i’m going, the Ghost particle will send a secondary collision event with a different channel.

The droplets emitter sends an event for collision channel A and the the ghost emitter sends a Collision event to Channel B.

The issue now, is that the ghost particle dosent really collide with anything since it dosent have any motion, so you need to add a downward gravity to it, make it pretty fast so as soon as the ghost particle spawn, it almost instantly collide with the surface and therefore generate the event.

This is cumbersome and annoying to do, but at the end of the day, i think its the only way you can have one emitter spawning different emitters based on Collision Types.

Here’s the result, note the difference on droplet impact when they are in the water or outside the water.

Hope it can Help someone !