Чтобы нарисовать путь, вы на правильном пути. Я бы использовал распознаватель жестов из двух имеющихся у вас вариантов.
Чтобы заставить прямоугольник следовать по пути, самый простой метод, о котором я могу подумать, - это сохранить массив x и y для каждой точки, которую вы проходите (не забудьте удалить последовательные дубликаты).
Итак, теперь, когда у вас есть массив точек, описывающих форму пути, вы можете запустить таймер или лучше использовать CADisplayLink, который установит положение прямоугольника для каждой из точек в массиве. Это заставит прямоугольник следовать по пути.
Если вы хотите, чтобы прямоугольник также следовал ориентации, вам нужно будет использовать векторы , чтобы описать направление, в котором должен направляться прямоугольник.
Сначала вам нужно вычислить расстояние между положением прямоугольника и точкой, в которой он должен идти дальше, используя:
затем, когда вы знаете расстояние, вы можете использовать arcsine
, чтобы определить угол поворота. Затем просто поверните прямоугольник на это значение.
Будьте осторожны при представлении углов (pi против градусов) и в системе координат.