"Activate" function changes socket location

I am trying to make a vehicle that can shoot while moving, along with a muzzleflash particle effect. I was originally using Spawn Emitter at Location but the particles were not inheriting the velocity of the vehicle. I managed to get them to inherit the velocity by adding the muzzleflash effect to the component list of the vehicle blueprint (attached to a socket), and then activating it using a retriggerable delay while mouse button 1 is pressed.

This works fine for the first shot but every subsequent bullet that spawns while mouse1 is held down is about 100 cm too high. If I print the socket location you can see it jump up by about 100 units. The particle effects spawn in the correct place–only the bullet itself is wrong. If I attach a sphere to the socket and make it visible in-game I don’t see it jumping at all. If I rapidly click mouse1, there is no issue. This problem only happens while holding down mouse1. Getting rid of the Activate node fixes the bullets (but the particle effect obviously does not play).

I have tried using Spawn Emitter Attached but it doesn’t seem to allow the particles to inherit velocity (or I haven’t figured out how). When using Spawn Emitter Attached, both the bullet and the muzzleflash particle effect spawn too high after the first shot, and the problem only starts until after I press a button associated with vehicle movement.

Okay I’m not sure if this is the “correct solution” but it seems to have solved my issue:

I read this answer about “activating” detaching child components: https://answers.unrealengine.com/questions/37576/activating-physics-detaches-component.html

So, instead of adding the particle system directly to the root/mesh I added a PhysicsConstraint to the muzzle socket and then attached the particle system to that.

25565-new+component+list.png