I think there are a few ways.
If it's a terminal bone, you can reapply that specific timeline in the animation using 100% alpha. It can look something like this:
// The following applies Translate and Rotate timelines in a Spine.Animation to a specific bone.
{
string myBoneName = "my bone name";
var mySkeleton = skeletonAnimation.skeleton;
var myAnimation = mySkeleton.data.FindAnimation("myAnimation");
var myBoneIndex = mySkeleton.FindBoneIndex(myBoneName);
var myBone = mySkeleton.Bones.Items[myBoneIndex];
var timelineItems = myAnimation.Timelines.Items;
for (int i = 0, n = myAnimation.Timelines.Count; i < n; i++) {
var timeline = timelineItems[i];
bool isTargetTimeline = false;
var rotateTimeline = timeline as RotateTimeline;
if (rotateTimeline != null && rotateTimeline.BoneIndex == myBoneIndex) isTargetTimeline = true;
var translateTimeline = timeline as TranslateTimeline;
if (translateTimeline != null && translateTimeline.BoneIndex == myBoneIndex) isTargetTimeline = true;
if (isTargetTimeline) {
timeline.Apply(mySkeleton, 0, 0, null, 1, true, false); // Apply the timeline at time 0.
myBone.UpdateWorldTransform();
}
}
}
You would make sure this code runs right before you need to use the bone position, but hopefully after your animations have been applied (in SkeletonAnimation.Update).