Самый простой способ сделать это - рассчитать угол к точке, которую вы хотите остановить при каждом перемещении. Это значение должно оставаться неизменным, если вы двигаетесь по прямой линии, пока не пройдете точку, в которой пытаетесь остановиться, и в этот момент она резко изменится.
Как только это произойдет, просто переместите ваш объект обратно в положение, в котором он должен был остановиться, прежде чем рендерить его снова.
Я создал демо с исходным кодом для вас. Существует довольно много кода, поэтому вместо того, чтобы публиковать здесь все, вы можете вместо этого загрузить исходный код:
http://martywallace.com/testing/gotoPoint.zip