Search Unity

Particle System "Stop Action"

Discussion in 'General Graphics' started by GfK, Sep 23, 2019.

  1. GfK

    GfK

    Joined:
    Aug 15, 2014
    Posts:
    107
    Hello

    I'm trying to use the Stop Action parameter in the Particle System Main Module, to destroy a particle system when it's done emitting.

    The effect in question is an explosion. Let's say it has a fire part (quick), and a residual smoke part (lasts longer than the fire). The smoke particle system is a child of the fire particle system.

    If I set the "Stop Action" of the fire to "Destroy", then the particle system destroys itself as soon as the fire is done emitting. This results in the smoke instantly disappearing with it.

    I know there are numerous workarounds for this, but to me, the logical way for this to work would be for Unity to wait until the particle system AND any child particle systems have no active particles. I'm pretty sure that's how ParticleSystem.IsEmitting worked when I was using that.

    Is there a reason for the current behavior? Bug?

    [unity 2019.1.14f1]
     
  2. richardkettlewell

    richardkettlewell

    Unity Technologies

    Joined:
    Sep 9, 2015
    Posts:
    2,285
    Hi,

    The Stop Action isn't currently aware of child systems or sub-emitters.
    It's somewhere between bug and feature request :) You are welcome to log it, and we may fix it if we figure out a good way.
     
    Iron-Warrior and karl_jones like this.
  3. GfK

    GfK

    Joined:
    Aug 15, 2014
    Posts:
    107
    Thanks - reported it as a 'bug', on the basis that it's not consistent with the behaviour of IsEmitting, and IsAlive has a flag to check the status of child particle systems too.

    So yeah, bug on one hand, feature request on the other. :confused:
     
    richardkettlewell likes this.
  4. richardkettlewell

    richardkettlewell

    Unity Technologies

    Joined:
    Sep 9, 2015
    Posts:
    2,285
    Hi, we’ve finally fixed this, so that a stop action won’t be triggered until all a system’s children/sub-emitters have also stopped.

    It’s a change in behaviour, so is unlikely to be backported, and is going to be available in 2020.2.0b2.