我正在使用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)
这适用于没有父元素的元素,但是当我添加一个带有父元素的元素(使用上面的代码)时,位置是错误的。我怎样才能正确计算坐标(无需迭代所有父母)?
感谢。
答案 0 :(得分:0)
CCNode
的方法为convertFromWorldSpace(AR):
和convertToWorldSpace(AR):
。您可以使用它们首先转换为世界坐标,然后再转回父级空间。