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):and convertToWorldSpace(AR):。您可以使用它们先转换为世界坐标,然后再转换回父空间。

于 2012-08-26T18:19:48.867 回答