You were passing the wrong vector3 to your OverlayPosition function. The position was supposed to be your 3D object's position. This script should also have been on the label, not on the 3D object. But if your current approach works, it's fine, stick with it.