2014-01-06 34 views
0

我有CCNode *parentNode,它有CCNode *childNode1CCNode *childNode2。我試圖用CCMoveTo動作移動parentNode,但是請留下childNode2哦同樣的位置。cocos2d:在父節點和子節點上運行不同的操作

下面的代碼

[parentNode runAction:[CCMoveTo actionWithDuration:0.5f position:ccp(x, y)]]; 
[childNode2 runAction:[CCMoveTo actionWithDuration:0.5f position:ccp(-x, -y]]; 

並不能幫助我實現我的目標。

它甚至可以解決我的問題嗎?

回答

1

當然這是可能的。你的問題是父母和孩子有不同的座標系,因此他們的變量xy不一樣。我確定父母移動到正確的位置,而孩子不移動。所以你需要的是爲孩子計算正確的xy值。

或者您可以使用CCMoveBy。它看起來像這樣:

float x_diff = x - parentNode.position.x; 
float y_diff = y - parentNode.position.y; 

[parentNode runAction:[CCMoveTo actionWithDuration:0.5f position:ccp(x, y)]]; 
[childNode2 runAction:[CCMoveBy actionWithDuration:0.5f position:ccp(-x_diff, -y_diff)]]; 
+0

哦,我用座標轉換。錯誤我沒有幫助。其實,'''[childNode2 runAction:[CCMoveTo actionWithDuration:0.5f position:[parent convertToNodeSpace:CGPointZero]];'''不移動孩子到{0; 0}。無法弄清楚,爲什麼如此。 – d12frosted

+1

你的意思是它不會將孩子移動到父母座標系中的{0,0}? –

+0

是的,父母的{0,0}。哦,我想我看到了這個問題。它計算新位置,但不計算偏移量。所以在時間= 0時,PointZero是一個,在動畫結束時,PointZero實際上並不是父代的{0,0}。 – d12frosted

相關問題