Solved: Issue is that I’ve been relying on mouse.Hit
which gets the collision between the mouse ray and a basepart [or any physical instance]
Instead of using said method, I cast a ray from the camera with the 2D mouse position via camera:ScreenPointToRay(mouse.X, mouse.Y)
and used that to solve for the intersection point between the mouse ray and the drag plane. With that, I can project the mouse movement onto the selected axis (X/Y/Z) while using vector dot product to get the signed movement amount along the axis.
All of this is inspired by F3X Btools moving instance feature or whatever you call it ;p