Awhile back I fiddled around with particles in another engine and decided to translate some of it’s more helpful and neat features to Roblox to try getting them added. It’d be great if anyone reading this would post their own use cases.
[size=20]Additions[/size]
Alignment
How the alignment of the particles is determined.
Billboard
Particles rotate to face the viewer (current behavior).
Fixed (example)
Particles don't automatically rotate. Instead the rotation is based on the FixedRotation property. Texture is visible on both sides of the particles.
Velocity (example)
Particles turn so that their front faces the viewer and their top faces the direction they're moving.
FixedRotation
See Fixed alignment. Open to different ideas on how to handle fixed rotation because this feels janky.
Stretchiness (example)
Basically, it makes particles stretchy. Technically, Stretchiness > 0 makes the bottom constantly try to move where the top is, and the value is a delay (e.g Stretchiness 1 makes the bottom of the particle constantly move where the top was 1 second ago).
Wander (example)
When enabled particles occasionally have a bit of velocity added to their current velocity, giving them a "wandering" look.
Frequency
How frequently it happens.
Strength
How strong it is.
Frame
A Vector3 used for spritesheets. X and Y are horizontal/vertical divisions of the texture and Z is the frame (e.g this texture has 9 pieces, so "3,3,7" divides the texture into 9 pieces and displays the 7th one). Or if that seems like a very weird use of Vector3 then the division could be a different property and Frame is an integer.
Alternatively Frame is a NumberSequence (like Transparency and Size). This would allow you to give particles an animated texture.
[size=20]Changes[/size]
Maximum size raised from 10 to 100. I don't think anyone ever has or will need size-100-particles, but down at 10 seems really weird and I've needed them a bit bigger at times. If the low limit is technical then a small increase would be fine too.
Rate changed to a NumberRange. Great for some randomness.
I've had a use for pretty much everything here at one time or another (except the NumberSequence version of Frame, that just came to mind while writing this and I tacked it on).
Go nuts! I’d kind of prefer cases of stuff that’s impossible to do right now. Or things you’d already be doing if this stuff was available.
Yeah, I’ve had a todo list for particles for quite a while here: Trello , but with all the xbox porting going on, there’s no time for me at the moment.
May be not up to date, but yeah…
I guess I’ll sort of take that as “maybe when I’m less busy”.
Also I’m not sure if it was forgotten or what, but despite being under “Shipped” on your todo list Drag has been around since August and it’s still not enabled.
Frame feature would be unbelievably helpful, I could render my explosions in blender and port them over as sprites. This wouldn’t even need to be its own object, just a property on the ParticleEmitter like:
ParticleEmitter.IsSprite = bool (default is false, if true then these properties aren’t greyed out.)
ParticleEmitter.SpriteFramesX = #OfRowsInSprite
ParticleEmitter.SpriteFramesY = #OfColumesInSprite
ParticleEmitter.SpriteFrameSizeX = Vector2
ParticleEmitter.SpriteFrameSizeY = Vector2
ParticleEmitter.SpriteMovementDirection = XY, YX, -XY, X-Y, -X-Y, etc
ParticleEmitter.SpriteXSpeed = # (How long the frame in the sprite is shown)
ParticleEmitter.SpriteYSpeed = # (How long the frame in the sprite is shown)
Could we maybe even get more then just a Starting and Ending color for particles? I kinda would like to be able to add more color changes then just a starting and ending.
As seen in the images, the explosions start out white, yellow, orange then go black, I would like to be able to do that one day on roblox. c:
I think it would be great if we could specify a plane (or several planes) which the particles will interact with if real particle physics are not feasible enough.
I think one of the best approaches to animated particles would be like in the OP; allow you to set what division of the texture is 1 frame and a NumberSequence to control which frames happen when and for how long (defaults to linearly going through all the frames over the particle’s life).
Like if the division was (3,3) then frame 1 would be the top-left of the texture, 2 top-mid, 3 top-right, 4 mid-left etc up to 9. Then you could tune how it goes through those frames with the frame sequence.
I also just realized that a neat thing about the frame being a NumberSequence is you could have particles that pick a random image from a sheet for debris, leaves etc.
Any chance of anything from the OP getting in? I’d kill for the alignment settings (especially Fixed), and I just recently found myself needing animated particles; I wanted to make a gleaming effect like <a&href=http://puu.sh/p6k8m/c0a905fba6.gif>this, but I’m pretty sure I can’t pull it off without being able to animate it.
I’d get rid of Wander if I could still edit the OP. I’ve long since realized that with the way emitters are right now, it’s a lot better to do that kind of thing myself.
No, this “particular” update only brings a very long overdue ColorSequence editor to the plate. The size constraints were relaxed to 0…200 a couple of months ago (the spline editor doesn’t support those, but you can manually set the sequence).
And you can easily vary the emission rate from the scripts at any morph rate of your choosing.