Нет необходимости менять позицию вашего спрайта. Все преобразования (вращение, масштабирование и т. Д.) Выполняются относительно anchorPoint вашего узла. Если вы хотите, чтобы ваш спрайт визуально оставался в одной и той же позиции, просто установите anchorPoint на
ccp(0.5f, 0.5f)
Кстати, CCSprite по умолчанию имеет такую точку привязки.
Во время ВСЕХ ваших преобразований anchorPoint вашего узла будет иметь положение, которое вы установили для этого узла. Итак, если вы установите anchorPoint в
ccp(0.f, 0.f)
левый нижний угол вашего спрайта будет в том же положении во время вращения, масштабирования и т. Д.
Также вы должны помнить, что ваши собственные подклассы CCNode (не CCSprite) не будут реагировать на свойство anchorPoint, пока вы не установите свойство экземпляра isRelativeToAnchorPoint в YES.
[yourNode setIsRelativeAnchorPoint:YES];