This depends on your what look you're after, what kind of structure the skeleton has and what the animations you want to be like
I think:
(1) You can have one walking animation as the base, or a plain walking version and an aiming-and-walking animation version.
(2) Have a second aiming animation, where you have the character's upper body aiming with the bow, and the direction is aimed using an IK target. The shooting animation is also probably similarly constructed. In these animations, don't key any of the leg parts. It's designed to go on top of the walking animation and any keys here will override the values of the walking animation.
(3) To make it really simple (and the calculations performant), the IK target should be a direct child of the root bone, and you shouldn't rotate or translate the root bone in any animation. If this is the case, the code below works.
(4) play and manage the walking animation on track 0. shooting and animing on track 1.
(5) control the IK target bone by keeping a reference to it, and subscribing to SkeletonAnimation's UpdateLocal event to set its position.
skeletonAnimation.UpdateLocal += HandleSetBonePosition;
and the method would look something like this:
void HandleSetBonePosition (ISkeletonAnimation s) {
if (isAiming) {
Vector2 targetPointLocalSpace = skeletonAnimation.transform.InverseTransformPoint(targetPointWorldSpace);
myIkTargetBone.SetPosition(targetPointLocalSpace); // This is an extension method. You can find it in SkeletonExtensions.cs.
}
}
The trick is mostly in the Spine rig. You need to set up your IK so the pose is correct when the IkConstraints are enabled.
Then just set the IkConstraint mixes to 1 in the relevant animations. Or control the IkConstraint.Mix value programmatically.