Couple of early ideas you could try:
- Have the lifetime of the particles as short as you can get away with, and just make them move faster to make up for it. This is probably the fastest way.
- Try using a combination of the regular ‘Spawn’ module and ‘Spawn Per Unit’.
- Try adding an ‘Inherit Parent Velocity’ module and balancing the values so that the flame ‘moves’ a bit with the velocity of the emitter, therefore giving the appearance that the flame is shorter.
A more complex approach but one which would definitely work, is to use a mesh for the flame, and use World Position Offset in the material to give the random flame movement and the directional drag. You can send the velocity of the emitter to the material as a parameter, and have the WPO ‘move’ the vertices near the top of the flame in the opposite direction, and limit that movement to a given range. You can either use the UV’s to mask the WPO from top-to-bottom, or vertex-paint a gradient instead.
This is probably the best way, since you can also modify the intensity of the WPO at any time, for things like wind in the world for example. It would take a bit of time to get this setup but for something that’s always going to be quite close to the camera, you want it to be good
With a mesh, you could also give the flame a more ‘Volumetric’ and soft-edged appearance thanks to the material, but you’ll also want to be careful not to push the vertex offset too far otherwise faces will start clipping through each other and causing artefacts.
I may be able to post an example later if I get time to mess around with something. Quite a cool idea.