I forgot to add it! Thanks!
It should be available now.
Great resource!
Everything has been great with the module, but I’m sad to see there is no :Emit
like function.
The closest thing to the ParticleEmitter:Emit()
is doing:
ParticleEmitter.rate = 1;
task.wait(1);
ParticleEmitter.rate = 0;
which occasionally doesn’t even work.
it would be a lot more optimized if we got a function like:
ParticleEmitter:Emit(5) -- fire 5 particles
Ah, so the reason that doesn’t always work is due to how the particle emitter is designed. That being said. If a :Emit
function were added it would be trivial to work it into the existing project such that your edge case becomes possible.
I will try my best to add that tonight!
Pretty sure that’s just a sprite sheet.
It’s possible. That may be the case
Seems that the person was asking how to recreate that effect with rParticle though.
If you want to, you could use some kind of sprite sheet in combination with rParticle to do something like this.
I’ve implemented a public :Emit
function.
Here is an example of how that can be used
local ParticleEmitter = require(game.ReplicatedStorage.Source.ParticleEmitter)
local emitter = ParticleEmitter.new(script.Parent, game.ReplicatedStorage.Particle)
emitter.onSpawn = function(particle)
print("Spawned!")
particle.element.BackgroundColor3 = BrickColor.Random().Color
particle.maxAge = 10000
particle.velocity = Vector2.new(math.random(-3,3) / 3 + 0.1, math.random(-3,3) / 3 + 0.1)
end
emitter.onUpdate = function(particle, delta)
particle.position = particle.position + particle.velocity
end
emitter.rate = 0
print("Waiting")
task.wait(5)
print("Emitting")
emitter:Emit(5)
This results in something that looks like this:
Hopefully you can see that 5 particles were fired all at once after a brief wait period.
I haven’t created a release for this yet, so if your seeing this before I do that you can fetch the most up to date code from the repository it’s self and use it that way. Check the original post for the link to that.
Ah! So that’s why :Emit() wasn’t working on this. Please update the documentation to reflect that if it’s not available for use please! Love where you’re going with this otherwise.
Thanks for the response! I got sidetracked for a few months with school stuff, but I will update the current docs so others won’t get confused!
Then I’ll look into releasing the most up-to-date code.
Released v1.3
This version simply adds the :Emit(int count)
function to the particle emitter. I was originally waiting to release this version until there were more features to add. But at this point I feel I’m mostly happy with where the project is at.
If there are any issues or further suggestions for improvements please leave an issue in the git repo!
How do I set the particle’s Position? I keep getting an invalid argument error whenever I try to set one.
Error message:
This is super cool, and will definitely help with gui enhancement in the future!
Is there any way to change the duration the particles last for, so they don’t fall all the way down to the bottom of the screen?
Sorry! Im just now realizing that the documentation doesn’t make this clear. But the position property on a particle is a Vector2 not a UDim2. The conversion to UDim2 happens in the background so make sure you are using Vector2!
The age property is what you are looking for here. Setting the age to something smaller will decrease the time that the particle is visible for.
Very cool! Messed around for 30 minutes and made a button click effect. Model below if anyone would like it
Ah, thank you so much! This has been exactly what I was looking for a while now.
This looks super cool! Glad that you were able to get it working!
Of course! If you have any further questions feel free to ask!
I’d also put on the documentation that Position uses Offset rather than scale. It took me a long time to figure out what was wrong
For anyone wondering to add scale (even though you can easily change it in the modulescript)
particle.position = Vector2.new(ScaleX * hook.AbsoluteSize.X, ScaleY * hook.AbsoluteSize.Y)
Does this support flipbook textures?
The library itself only handles emitting particles. How the particle acts or the logic it contains is independent of this library. So if you create a particle that uses flipbook textures, then yes, the library can use it like it would any other UI element.