cocos2d:在父节点和子节点上运行不同的操作

时间:2014-01-06 14:47:58

标签: ios objective-c cocos2d-iphone

我有CCNode *parentNode,有CCNode *childNode1CCNode *childNode2。我正在尝试使用CCMoveTo操作移动parentNode,但是将childNode2保留为相同的位置。

以下代码

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

无法帮助我实现目标。

甚至可以解决我的问题吗?

1 个答案:

答案 0 :(得分: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)]];