有没有办法将每个精灵的锚点设置为精灵的中心(所以 0.5f,0.5f),所以当您使用 CCTMXLayer 的 positionAt 方法时,它实际上会返回 CGPoint 在图块的中间?
我意识到我可以手动完成(这就是我现在要做的),方法是将一半的 x tilesize 和一半的 y tilesize 添加到该点,但我想知道是否可以将它设置为任何方式与他们的 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;
}
谢谢 !