As a Roblox developer, it is currently impossible to keep the existing particles while destroying the particle emitter
I think right now the best option is a bunch of conditionals and I am probably missing stuff but I am doing this:
--where ins is the bullet (see the streamables)
local ttl=0
for _,v in ipairs(ins:GetDescendants())do
if v.ClassName=='Sound'or v:IsA'LayerCollector'or v:IsA'Light'then
v:Destroy()
elseif v:IsA'ParticleEmitter'or v:IsA'Beam'or v:IsA'Trail'then
ttl=math.max(ttl,v:IsA'ParticleEmitter'and v.Lifetime.Max or v:IsA'Trail'and v.Lifetime or 0)
v.Enabled=false
elseif v:IsA'BasePart'or v:IsA'Decal'then
v.Transparency=1
end
end
_G.debris:AddItem(ins,ttl)
to achieve https://streamable.com/0eegv
But Iād like to just write
ins:Destroy()
Except right now Roblox :Clear()s the ParticleEmitter when we call :Destroy(), so it looks like this: https://streamable.com/3qxmq
So please support and maybe someone will see and fix this