仅更改锚点而不是位置

时间:2014-07-19 00:58:36

标签: cocos2d-iphone

如何更改anchorpoint并且不要改变位置??

我有一个sprite,它有0,0。

但是,我想暂时更改锚0.5,0.5,因为我想旋转精灵。

我想做的就是这样。

  CGPoint anchorPointOriginal = ccp(0,0);
  CGPoint anchorPointTemp = ccp(0.5,0.5);


  [mySprite setAnchorPoint:anchorPointTemp];

  //Rotate

  [mySprite setAnchorPoint:anchorPointOriginal];

但是当我更改anchorPoint时, 精灵也根据新的锚点移动位置

是否可以保持精灵位置并仅更改锚点?

2 个答案:

答案 0 :(得分:1)

更改定位点时尝试更改精灵的位置。有点像...

mySprite.anchorPoint = anchorPointTemp;

mySprite.position = CGPointMake(mySprite.position.x+mySprite.size.width/2,
             mySprite.position.y+mySprite.size.height/2);

这将改变anchorPoint并移动精灵以正确补偿位置变化(由于锚点变化)。

如果要将锚点更改回CGPointZero,则需要撤消此操作。

答案 1 :(得分:0)

如果你使用cocos2d-iphone 2.0或更高版本,那么你可以简单地使用
ignoreAnchorPointForPosition属性

mySprite.ignoreAnchorPointForPosition = YES;