cocos2dを使用してiphoneアプリケーションを開発していますが、座標を親スペースから子スペースに変換する際に問題が発生します。
N個の要素があり、各要素には位置があり(0,0は左上隅にあり、左下にはありません)、各要素は親を持つことができます。また、要素に親がある場合、その位置は親のローカル座標空間にあります。
例:
Sprite1 at global position(10,10)
Sprite2 at global position(20,20)
Sprite3 at local position(20,20) and at global position(40,40)
Sprite4 at local position(30,30) and at global position(70,70)
スプライトを追加すると、次のように座標が計算されます(親なし):
CCSprite * sprite = [CCSprite spriteWithFile:image];
CGPoint position = [[CCDirector sharedDirector] convertToGL: ccp(element.x, element.y);
sprite.position = position;
要素の座標空間は左上隅から始まるので、アンカーポイントを設定する必要があります。
sprite.anchor = ccp(0,1)
これは親のない要素に対しては機能しますが、親のある要素を(上記のコードで)追加すると、位置が間違っています。どうすれば座標を正しく計算できますか(すべての親を反復処理する必要はありません)?
ありがとう。