在cocos2d中获取CCSprite的绝对位置

在我的游戏中,我有一个CCSpriteCCSprite另一个CCSprite ,就像绕着核心运动的电子一样。 我有电子作为核心的一个孩子,使animation更简单。 我所要做的就是旋转核心,电子跟随套件相当好。

然而,我的问题来自想要让轨道animation显得有些时髦,通过添加类似粒子系统轨迹的东西,或跟随电子path的带状效应。 我不能简单地将一个粒子系统添加到电子本身,因为粒子不能正确地遵循,因为它们也被primefaces核旋转。 如果我将粒子系统添加到self ,那么它们看起来是正确的,但不是与它们应该跟踪的对象相同的位置。

我的问题是这样的:

有没有办法获得一个物体的场景位置,比如说电子,而不是只能访问它相对于它的父母的位置?

谢谢。

就在这里!

每个CCNode及其后代都有能力获得相对于现场的位置:

CGPoint worldCoord = [mySprite convertToWorldSpace:mySprite.position];

这个世界坐标将相对于现场而不是父节点!

希望这有助于! ^ _ ^

稍后编辑:

当你这样做时:

 [aSprite convertToWorldSpace:position]; 

你实际上得到了一个Sprite坐标系中的全局坐标。 如果你想把Sprite的位置翻译成全球空间,你需要请求它的父母为你做翻译,因为sprite.position已经在它的父母坐标系统中了。

希望能解释一下


原始答案:

对于我来说,这个解决scheme没有奏效

我有一个2级的层次结构,其中mySprite是一个CCSprite的孩子,是一个孩子的场景。

底线:这段代码解决了我的问题:

 CGPoint worldCoord = [[mySprite parent]convertToWorldSpace: mySprite.position]; 

这是需要我的解决scheme的层次结构:myScene – > mySpriteParent – > mySprite

 mySprite.position:29,254 mySpriteParent.position:533,57 

解决scheme1 ​​ – 错误的结果:

 [mySprite convertToWorldSpace: mySprite.position]:91,418 

解决scheme2 – 正确的结果:

 [[boxSprite parent] convertToWorldSpace:boxSprite.position]:253.5,275.5 

也许这个解决scheme会帮助别人也许有人会解释为什么这个解决scheme的工作,而不是其他