CCTMXTiledMap每个Tile / CCSprite的锚点

时间:2012-11-03 00:54:33

标签: objective-c cocos2d-iphone

有没有办法将每个精灵的锚点设置到精灵的中心(所以0.5f,0.5f),所以当你对CCTMXLayer使用positionAt方法时,它实际上会返回CGPoint中间的CGPoint。瓦 ?

我意识到我可以手动完成它(这是我现在要做的),将x个tileize的一半和y个tileize的一半添加到该点但是我想知道它是否可以设置它以任何方式使用他们的API。

我尝试的是经历每个精灵并将锚点设置为0.5,0.5:

for (int i = 0; i < [layer layerSize].width; i++){
   for (int j = 0; j < [layer layerSize].height; j++){
      [[hey tileAt:ccp(i,j)] setAnchorPoint:ccp(0.5f, 0.5f)];
   }
}

这个(obvs)改变了每个瓦片精灵的锚点,但是当我使用positionAt获得位置时,仍然会考虑锚点0,0。

同样,我可以解决这个问题并为每个瓷砖计算我自己的中心点,但我想知道如果没有它可以做到这一点。

一个简单的解决方法是:

CCTMXLayer *layer = [map layerNamed:@...];

-(CGPoint) positionAtFix: (float) x :(float) y {
   CGPoint *abc = ccp([layer positionAt:ccp(x,y)] + [map tileSize].width / 2 ,
                              [layer positionAt:ccp(x,y)] + [map tileSize].height / 2 );
   return abc;
}

谢谢!

1 个答案:

答案 0 :(得分:0)

如果不更改CCTMXTiledMap源代码,则无法实现。它专门用于将anchorPoint渲染为0,0。