ParticleEmitter particle disaper with inf lifetime param

I’m trying to place 1 emitted particle with infinite lifetime

However, particle still disappears after a few moments

I was tried to emit particle periodically via ParticleEmitter parameters, like 20 lifetime and 0.05 rate or 1 lifetime 1 rate, but it’s never work insensibly. No matter how I tweak, it’s always overlap one particle over another, or disappear for waiting a new one.

Also, I tried to :Emit() it via script, but results were the same.

BUT! If I want to create infinite lifetime particle a can’t have any Rate on emitter, because I don’t want to have more than 1 particle, so I still call :Emit() from script.

local emitter = script.Parent

task.wait(2)

emitter:Emit(1)

I have seen some topics about infinite lifetime particles, and still can’t understand why it doesn’t work. (also documentation told only about 20sec. cap for particle ParticleEmitter | Documentation - Roblox Creator Hub)

Will be glad for your opinion or assistance :heart:

1 Like

Maybe clearing all particles before you emit the single particle will work?

in a script

1 Like

Thank you for reply @TheStarManDude :heart:

Do you mean call Clear before calling Emit?
I was tried that right now, doesn’t work, but it’s kinda making scene, because I’m clearing an empty list

If you mean clear all existing particles on a scene, well, I have exactly 6 particles with a same logic on a scene :smiley:

Surely I don’t overcap particle limit, maybe I missed something :thinking:

Have you tried setting it to something like 9999999999?

Yep, it’s working in a same way by using cap value :frowning_face:

If you set your graphics quality to max, does it take longer to disappear? If so, you are creating particles in the background somehow which causes older ones to disappear because of the particle limit being really tiny on low graphics.

I was thinking about it, but I tuned game mode quality to max and editor quality to 21lvl. , sadly it doesn’t provide any effect

My solution for that moment is:

  1. Using cap lifetime with super low timescale to extend overall lifetime, and make flip book transition more smooth.

  2. Use child to emitter script:

    local emitter = script.Parent
    
    task.wait(2)
    
    while true do
    	emitter:Emit(1)
    	task.wait(1000) --lifetime/timescale
    end
    

    For Emit first particle after scene loaded(2 seconds is important for having enough time after scene started), and constantly call Emit every lifetime/timescale seconds.

  3. Use transparency curve, with 1 value on nearly beginning and end of a lifecycle, for masking flickering if new particle spawn too early or too late.

    Overall, it’s still not the best practice, but I guess that can help someone :heart:

In the particle emitter, there is a method called :Clear() which clears all particles. Then you can emit 1 using :Emit(). You can call :Clear() exactly how you call :Emit(), but :Clear() doesn’t take any parameters.

Put it inside of a while loop and do it every 1 second.

I hope this helps :smile:

That solution still flickering. Actually it’s work in exact same way like it’s work now. I think that’s the best solution so far.

If you set TimeScale to 0 the particles should never disappear.