各スプライトのアンカーポイントをスプライトの中心(つまり0.5f、0.5f)に設定して、CCTMXLayerにpositionAtメソッドを使用すると、実際にはタイルの中央にCGPointが返されるようにする方法はありますか?
ポイントにxタイルサイズの半分とyタイルサイズの半分を追加することで、手動で実行できることを認識しています(これは、今のところ実行します)が、任意の場所に設定できるかどうかを知りたいです。彼らの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;
}
ありがとう !