2012-08-26 24 views
1

我正在開發一個使用cocos2d的iphone應用程序,我在轉換座標從父到子空間時遇到了問題。cocos2d從父到子空間轉換

我有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) 

這適用於沒有父項的元素,但是w如果我添加一個父元素(使用上面的代碼)的位置是錯誤的。我如何正確計算座標(不必遍歷所有父母)?

謝謝。

回答

0

CCNode具有方法convertFromWorldSpace(AR):convertToWorldSpace(AR):。您可以使用它們首先轉換爲世界座標,然後返回到父級空間。

+0

會欣賞一個例子 – blejzz