Не уверен, что это ваша проблема, но у меня была проблема с Cocos2D, масштабированием и перемещением, которую я решил с помощью перемещения anchorPoint.
То, что я хотел сделать, это увеличить (масштабировать) и переместить слой. Масштабирование будет двигаться нормально, если позиция была {0,0}, а точка трансформации была {0.5,0.5}. Но затем, если бы я переместил его, он все равно трансформировался бы вокруг {0.5,0.5}, который к тому времени мог бы быть вне экрана, поэтому он действительно масштабировался бы.
Решением было переместить точку трансформации в середину экрана, каждый раз, когда я перемещал положение слоя. Исправить эту формулу было нелегко, поскольку при перемещении точки преобразования операция масштабирования имела бы новую центральную точку.
Формула, которую я использовал в итоге, была следующей:
layer = self.foreground;
ccpAdd(
ccpDivide(
ccpNeg(layer.position),
(CGPoint){layer.contentSize.width, layer.contentSize.height}),
(CGPoint){0.5f,0.5f}
);
В основном: разделите инверсию положения слоев (то есть {300,200} станет {-300, -200}) на размер слоя {480,320}, а затем добавьте {0.5,0.5} (как я хочу мой якорь всегда будет в центре + смещение)
В любом случае, вам может понадобиться разработать совершенно другую формулу, но это сработало для меня. Я должен был применить это к моей точке привязки каждый раз, когда я переместил слой.
Удачи, надеюсь, это поможет!