cocos2d从父级转换为子级空间

时间:2012-08-26 18:17:01

标签: iphone cocos2d-iphone coordinates

我正在使用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)

这适用于没有父元素的元素,但是当我添加一个带有父元素的元素(使用上面的代码)时,位置是错误的。我怎样才能正确计算坐标(无需迭代所有父母)?

感谢。

1 个答案:

答案 0 :(得分:0)

CCNode的方法为convertFromWorldSpace(AR):convertToWorldSpace(AR):。您可以使用它们首先转换为世界坐标,然后再转回父级空间。