Rotation question

Hey I’ve been struggling with rotating stuff, it always seems to rotate weirdly.
I want to instantiate a weapon at the player’s hand:

 equippedWeapons[replaceIndex] = (GameObject)Instantiate(weapon,hand.transform.position, hand.transform.rotation);

Unfortunately this places it at 90 degrees to the hand. I’ve tried things like:

    Quaternion rot = hand.rotation;
    rot.eulerAngles = new Vector3(rot.eulerAngles.x, rot.eulerAngles.y + 90, rot.eulerAngles.z);

and:

		Quaternion rot = hand.rotation;
		rot.y -=90;

Both of these just rotate it some weird amount around some random axis lol. I’m guessing this has something to do with the w value of Quartonians? But i have no idea how to calculate what that should be…
I’ve also tried, among other things, changing the hand bones rotation in my 3D software, but for some infuriating reason I can never get it to rotate correctly lol. I’m sure something like this must be very simple to do, but I just can’t get it to work. Thanks.

Don’t use Quaternions manually, unless you understand them. They are not as easily understandable as Eulers.

The easiest method would be to parent the gun to an Empty and rotate it 90°.