2
votes

I've recently upgraded my project to 5.6.1f1.

I have a homing missile that tracks a target, and has a particle system attached to it to simulate the smoke.

Before I upgraded the project, the smoke worked well. I had a continuous supply of particles behind the missile that had a nice smoke effect. I forget which version of Unity I used before the upgrade (I think 5.4), but the emission module of the particle system only had a rate setting.

Now that I have upgraded to 5.6.1f1, my particles from my smoke are separated, like the steam coming out of a steam train:

enter image description here

The emission module now has rate over time and rate over distance. I've played around with these settings but nothing seems to adjust to how I want.

I've narrowed down to the fact that my missile is travelling at a very high speed. If the missile travels slower, then the particles look better. But, a missile is a missile and travels fast like my other objects. In the previous version of Unity I was using (I think 5.4), the speed of the missile did not affect the emission of the particles.

So, I guess my question is: How can I have a continuous emission of particles that isn't affected by speed?

(For reference, here is how I want my particles to look, regardless of the speed the missile is travelling) enter image description here

2
I guess your emission rate has to be really high. Try maximum value for the rate over time (5000). Plus your current behaviour could be due to shape. make sure it is not set to point.Umair M
5000 for rate over time had no effect. Shape is set to circle.Tom
As you mentioned, this could be because your object is moving too quickly. The particle will only emit where the missile is in each frame - so if the missile is "jumping" from position to position, the smoke will do the same, it cannot interpolate between the two positions within 2 frames. Why it worked before the update though, I'm not sure. You could try changing your render shape to something with length in order to fill the gaps but this may give you an undesirable effect.ryeMoss
Have you tried increasing the Simulation Speed to like 5?Hristo
@Hristo I've tried that too, no effect.Tom

2 Answers

1
votes

For anyone looking for an answer to the same problem, I found this post.

"From Unity 5.5 onward, particle system (PS) that uses emission rate over distance or inherit velocity (both heavily used in our particle effect assets) and is parented to a rigidbody (RB) object will appear not functional when you drag the object (with RB component) or change the position values in transform component.

The reason is that RB velocity has overriden any form of position translation to feed the velocity values to PS modules which require velocity data to work properly. Simply put, you should use Rigidbody.velocity (not even Rigidbody.position which is for detecting boundary) instead of Transform.position/Translate to move the object."

I simply changed:

transform.position += transform.forward * speed * Time.deltaTime;

to

rb.velocity = transform.forward * speed * 40 * Time.deltaTime;

Which gave a similar speed and the smoke was not separated.

0
votes

I had this problem once. The particles are inheriting the parents velocity. I can't remember where it is located, but there is a property called "Emitter Velocity Scale" that should be set to 0.

This should be located somewhere on the particle system itself.

There is also an answer about something changing in the particle system on that specific update.. Quoted from this unity forum post:

Under the particle system click the renderer tab to open it, check the material slot if it says none click the circle on the material tab and choose the Default Particle Material and then it will work right.