1

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)

これは親のない要素に対しては機能しますが、親のある要素を(上記のコードで)追加すると、位置が間違っています。どうすれば座標を正しく計算できますか(すべての親を反復処理する必要はありません)?

ありがとう。

4

1 に答える 1

0

CCNodeには と のメソッドがconvertFromWorldSpace(AR):ありconvertToWorldSpace(AR):ます。それらを使用して、最初にワールド座標に変換してから、親の空間に戻すことができます。

于 2012-08-26T18:19:48.867 に答える