Cocos2d iphone 在附着到静态实体时更改CCSprite定位点

Cocos2d iphone 在附着到静态实体时更改CCSprite定位点,cocos2d-iphone,chipmunk,Cocos2d Iphone,Chipmunk,我正在用花栗鼠(使用SpaceManager)创建一个静态形状,并在上面附加一个cpCCSprite 但是,我需要精灵的锚定点偏离中心,但是当我更改精灵的锚定点时,形状和精灵不再对齐 如果我像这样改变锚点 [sprite setAnchorPoint:ccp(0.5, 0.3)]; 精灵是据此绘制的,但我希望形状会随之“移动”。这是我的意思 左边是形状和精灵正确对齐。我没有改变锚点 右侧是锚定点为ccp(0.5,0.3) 我还在每一帧重新调整静态形状 下面是它是如何创建的 // create

我正在用花栗鼠(使用SpaceManager)创建一个静态形状,并在上面附加一个cpCCSprite

但是,我需要精灵的锚定点偏离中心,但是当我更改精灵的锚定点时,形状和精灵不再对齐

如果我像这样改变锚点

[sprite setAnchorPoint:ccp(0.5, 0.3)];
精灵是据此绘制的,但我希望形状会随之“移动”。这是我的意思

左边是形状和精灵正确对齐。我没有改变锚点

右侧是锚定点为ccp(0.5,0.3)

我还在每一帧重新调整静态形状

下面是它是如何创建的

// create the sensor
sensor = [spaceMgr addRectAt:pPoint mass:STATIC_MASS width:53 height:81 rotation:0];
  sensor->sensor = YES;
  sensor->collision_type = 2;

  //Create the sprite
  CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:@"bownce-sprites-comic-sized.png"];

  barrel = [[cpCCSprite node] initWithShape:sensor texture:texture rect:CGRectMake(3, 428, 53, 82)];
  [self addChild:barrel];

  // set the ancor point
  [barrel setAnchorPoint:ccp(0.5, 0.3)];
  [barrel setPosition:pPoint];

这是对主持人工作方式的常见误解。锚点与节点的位置无关。相反,它是节点对象纹理的偏移

默认锚点位于0.5,0.5,这意味着纹理位于节点位置的中心。如果将“anchorPoint”设定为0,0,则纹理的左下角将与节点的位置对齐。实际上,纹理会向右和向上移动。但是,节点的位置没有改变


由于形状与节点的位置对齐,因此在更改锚点时它不会移动。解决此问题的最简单方法是更改图像,例如,仅使用透明颜色,将其尺寸增加到一侧。我希望这是可以理解的。

旧线程,但如果将锚点设置为0,0,是否意味着精灵的位置与UIKit的位置相同?不完全相同。UIView的0,0位置位于屏幕的左上角,从右向下延伸。忽略不同的轴方向,必须将锚点设置为0,1,以定位cocos2d节点,类似于UIKit视图。FYI cocos2d 0,0位置位于屏幕的左下角。