Why does ParticleSystem transform follow root GameObject

I have a Shuriken Particle system that is rotating based on my root GameObject rather than the child object to which it’s attached and I want it to follow. This didn’t happen with the old Particle system. I could explicitly make it follow the child’s rotation, but it seems like that should not be necessary. World vs Local in Shuriken has no impact on this.

My 3rd Person character is built from the fbx of the character mesh which becomes it’s Root GameObject. I have several meshes and an Armature as children of that GameObject. Then several levels down in the bones (specifically at the Right hand), I attach whatever weapon is currently being used. The attachment point, the right hand, is a subsequent child of the spine. The spine rotates 15 degrees via camera rotation prior to moving the bottom half (legs) of the character. When the rotation of the upper body (head, gun all included in the continuous rotation) reaches 15 degrees, the bottom slowly snaps to the current rotation of the camera with a shuffle animation. This allows the player to look around a little and even shoot without rotating the direction for running, walking etc. My muzzle flash, using the old particles, would follow the spine…right hand and gun (which is a child of the hand). Shuriken only follows the top level game object when it’s transform is rotated.

The result is that that the muzzle flash fires in the direction of the 15 degree jumps the lower part of the character makes, rather than where the weapon is pointed (except for those moments where both are aligned). It’s rotation is perfect at those 15 degree intervals.

Why is this Shuriken component, placed way down the chain, moving with the top level transform and not it’s immediate parent? If it’s not supposed to be that way, I will look for my bug. But I need to know if it’s supposed to work this way prior to hacking.

I have long been using Shuriken on my vehicles and don’t have this problem with those emitters though the circumstances are not identical and there is no bone parenting involved.

I am guessing bug. I “fixed” it by removing any manipulations of an intermediate spine bone and switching to where the rig now rotates. This is not a simple fix, I had to rebuild for first person and convince my partner that we were now going FPS ;). There were other reasons why I wanted FPS. But the messing around I did to try and make it follow the rotations of anything below the root, all turned up nothing. I would like to know what those developing Shuriken have to say on this. It could still be our bug. One thing that I didn’t try, was to stuff a gameobject in between weapon and muzzle flash, to see if that transform could be manually manipulated and the particle follow. I realize that is a lot of work in the scripts, thus I didn’t try it, but it might be worthwhile. Since the flash is already isolated from the right hand via the weapon on mine, I kind of doubt that will even work.

Thanks for showing enough interest to answer. This is apparently not a normally noticed issue.

For anybody else who has this problem the simple work around

void PlayerInputThatMovesGun()
{
muzzleEffect.transform.parent = currentGunModel.transform;
muzzleEffect.transform.localPosition = new Vector3(0, 0, 7);
muzzleEffect.transform.parent = null;
muzzleEffect.transform.forward = currentGunModel.transform.forward;
}