Instead of using GameObject.SetActive to play the guns, use ParticleSystem.Play(). Why? It is because when you let go of the space key, the particles that were already emitted before letting go of the space key disappear too. Didn't Ben and Rick cover how to solve this problem in the Argon Assault section of their Complete Unity 3d Development?