Character IK hand position and bone transform problem.


I’ve had created and rigged a character in Blender.

My problem is I have a gun that is animated with reloading animation,aiming,walking,sprinting,idle ( animations created in Unity ) and character ( animated in Blender → only legs are animated → walking,idle,sprinting,crouching) and i want to make it so the character holds the gun with his hand and not the transform of his hand ( the bone transform)

Is there a way how to do this ?
I had tried adding a bone on the hand and then positioning the hand on the green cube position.
(hand didn’t move)
I had also tried changing the mesh of the hand ( didn’t worked )

This is how he holds it.


and this is how i want him to hold the gun.

I have gun with gameobjects that are supposed to tell which hand is supposed to be on that location.
Blue cube - Left hand
Green cube - Right hand ( Hand is positioned at its transform position )

Hands are controlled by IK.

This is my script.

 protected Animator animator;

    public bool ikActive = false;
    public Transform rightHandObj = null;
    public Transform lookObj = null;

    public Transform left = null;

    void Start()
        animator = GetComponent<Animator>();

    //a callback for calculating IK
    void OnAnimatorIK()
        if (animator)

            //if the IK is active, set the position and rotation directly to the goal. 
            if (ikActive)

                // Set the look target position, if one has been assigned
                if (lookObj != null)

                // Set the right hand target position and rotation, if one has been assigned
                if (rightHandObj != null)
                    animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
                    animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1);
                    animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);
                    animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);

                if (left != null)
                    animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
                    animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1);
                    animator.SetIKPosition(AvatarIKGoal.LeftHand, left.position);
                    animator.SetIKRotation(AvatarIKGoal.LeftHand, left.rotation);


            //if the IK is not active, set the position and rotation of the hand and head back to the original position
                animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 0);
                animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 0);
                animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 0);
                animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 0);

Anybody knows how to “fix” this ?

The only issue is the position of the gun in relation to the hand? Im not a coder but I think there is something related to parent or child transform offset. That might help enough to point towards the correct code block.