So, I've started a new project and i've come across this problem:
I have this rather simple armature composed of 4 bones:
-Rotation: which is stationary and rotates on one of the three main axes (x,y or z).
-RotationArm: child of Rotation and inherits the rotation
-RotationArmPos: child of RotationArm and only inherits the position
-Target: child of RorationArmPos and it's not connected to him
My objective is to be able to move the Target bone along the immaginary tilted axis, going through the two ends of the bone, based on the vertical translation of the RotationArmPos.
To set up the rig that you're looking for, you can use the Transformation constraint on the Target bone. Using your set up, you would use the following steps:
Select the RotationArmPos bone.
Shift+select the Target bone.
Add a Transformation Constraint (Ctrl+Shift+C→Transformation).
In Bone Constraints, find the Transformation constraint that you just added. Make the following adjustments:
For the Source, set the Max Y value to 1.000. Leave all of the other numbers the same.
For the Destination, do the same.
For the Space drop-down menus, set your Source space to Local with Parent. Set your Destination space to Local Space as well.
At the top of the Transformation Constraint, enable the Extrapolate checkbox. This ensures that movement happens beyond the values you entered for the Y-axis on the Source and Destination.
Now, when you rotate the Rotation bone about its local Y-axis (in your image, that's also the global Y-axis), the Target bone will move along its own local Y-axis. Since RotationArmPos is a connected child of RotationArm, its Y-axis values are only going to go in the negative direction, so you should expect the Target bone to move towards its head as you rotate. From here you can tweak values to get the behavior your want. You may even want to remove the parenting of Target from RotationArmPos.
This constraint gives you a lot of flexibility. In fact, if the Rotation bone is your primary controller, you could even drive Target directly from that bone's rotation and skip using the RotationArmPos bone's position altogether.