Particle system's location is wrong if parent moves fast

Hello everyone.
I got an issue about particle system.
Actually it may not be because of particle system but because of WheeledVehicle class.(See video for ‘why’)

My particle is a simple backfire for car exhaust. In the video you can see, when car doesn’t move, particle becomes visible where it should be. But when move faster forwards/backwards, particle location is not where it should be. I don’t spawn any particle in runtime. I just create them on construct and use Visible/Hide for particles in runtime.

Interesting thing is, vehicle’s debug explains a lot imo.

Note: My particle doesn’t have any velocity variable if you want to ask.

Video explains my problem better: - YouTube

And I uploaded my particle file for testing purposes: Upload files for free - Content.zip - ufile.io

Edit: I changed particle file to be loop:false and use Activate(bReset = true) function when TriggerBackFires function called in runtime.
(Instead of using visible/hide functions with loop:true particle)
And the result is same.

Yeah, local should work. This isn’t a velocity driven effect anyway.

It appears the lagging colliders that we see in your video may be related to using physics sub-stepping. Is this setting enabled for your project? Based on some web searches, this appears to be a common issue with vehicles, because vehicles apparently often need physics sub-stepping to produce satisfactory behavior. Another user reported a similar issue, where buttons were lagging behind the vehicle at higher speeds.

If you have sub-stepping enabled, and you temporarily disable it, does that alleviate the particle system location problem at all? I don’t expect this to solve your problem; I’m just hoping to get closer to understanding the root issue.

Substepping is needed for vehicles for sure, but it wont prevent the debug colliders from lagging at high speed really. And this behavior with particles can be seen with fast moving non-vehicle actors too if it’s not an emitter updating in local space. It wouldnt be so obvious with a looping emitter with spawn per unit module but it wouldnt work for this kind of fx.

I had a similar issue with Cascade emitter (and I tried using a cable component instead with the same result), and it was a bit lagging behind the parent mesh as well. I posted the question here, but I got no answers, unfortunately.

The only possible cause for the issue that I could think of is that the particle system is one tick behind everything else, but idk if that’s right.

Is your particle system coordinate is set to local? If not, try it, might fix the issue.

And is it Cascade? You can try Niagara instead, the effect is fairly simple.

1 Like

Yeah. I activated substepping now but didn’t change anything on colliders. I switched particle’s emitter to ‘use local space=true’. Now it works quite well.

Thank you so much! This cost me nearly 1 day. :slight_smile: