Do I need to constantly update an object's forward to its rotation?

I instantiate an object that can spin wildly in space after hitting something:

var Pulsarshot = Instantiate(Pulsarshoot, GameObject.Find(“SpawnPoint”).transform.position, GameObject.Find(“SpawnPoint”).transform.rotation);

		//var Pulsarshot = Instantiate(Pulsarshoot,  GameObject.Find("SpawnPoint").transform.position, Quaternion.identity);
		Pulsarshot.rigidbody.AddForce(transform.forward * 50000);
		Pulsarshot.transform.parent = GameObject.Find("Pulsars").transform; //This puts the child with parent!!!

In GameObject script update() I then:

Pulsarx = transform.rotation.x;
Pulsary = transform.rotation.y;
Pulsarz = transform.rotation.z;

		rigidbody.AddForce(transform.forward * 5000);
		rotation = Quaternion.Euler(Pulsarx, Pulsary, Pulsarz + 15);
        //var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;
        transform.rotation = rotation;

In the views while the game is running the forward vector always points to world forward. The xyz vector gizmo never spins with the rotating instantiated object. It is locked forward to world.forward.
I have none of the objects effected by gravity. Which is what I want. It is a space game.

No. You do not need to hand-set transform.forward.

transform.forward is automatically updated to match the rotation. It’s like a computed value. Whenever you look at it, the system looks at the current rotation, and figures forward for you. So it’s always correct no matter how rotation gets changed. Try spinning and Debug.Log-ing, to be sure.

Since you’re already using a rigid body, might look at AddForceAtPosition. The further off-center the push, the more the object spins. Or AddTorque (like AFaP, but only spins – no push.) Or change the centerOfMass to give it a wobble, or set angularVelocity directly. Those are 1-time things, when you first make the object.

Otherwise, changing rotation by hand is easier with transform.Rotate(...). Hand-modifiying isn’t the recommended method.

Yep: Now I can look at my code in a new way to actually see what I have thought my code would do.
This is the answer:
Look at that top area with 4 “hand, arrow, ring, explode” and 2 “pivot, world” buttons. Those are all ways to set the gizmo. In translate mode, the gizmo can display as locked to world xyz or local xyz. As you can probably now guess: Global/Local is the setting.

It’s not explained much since it’s standard all all 3D programs.