I just upgraded to Unity 4 from 3.5.
I have many particle effects that use custom mesh emitter shapes. Some of these are Game Objects which are children of other objects. Suddenly, child particle effects which use meshes are being stretched to match the relative size of their parents. In other words, if the size of the parent is 1, 4, 1, then the absolute size of the child’s emission mesh will be 1, 4, 1 as well.
In 3.5, the absolute size (world scale) was always 1,1,1 and unchangable, even by the parent’s Transform.
I understand that it is now closer to how most other object Transforms behave, but the problem is that the “Scale” controls of their Transform remains greyed out and locked at 1,1,1 (local scale), so it is impossible for me to fix this in the inspector at build time (and the parent’s scale often changes during runtime anyway). The world scale is now fixed to the parent’s scale. Even if I could maybe fix it via transform.localScale, it would be very computationally expensive to try to calculate a relative size to get and set lossy world scale every single frame.
What’s going on here? Why on earth would this behaviour be intentionally changed for the worse and then not documented? This seems like a bug, but I’m not sure. Is there are a way to turn this behaviour off? If not, I’m going back to 3.5 - it’s just way too much work and too performance-expensive to completely de-parent all our particle systems and position them manually every frame (or to do lossy world scale transforms every frame like above).
Edit: found this in the 4.01f2 changelog: “- Shuriken: Fixed emitter shape being wrong shape when parented to another game object with scale.”
But I’m running 4.01f2, so maybe this messed-up behaviour is the “fix.” So frustrating. There were a lot of good reasons for the old way of doing it, and no particularly good ones I can think of for this way.