获得在cocos2d CCSprite的绝对位置(Getting absolute position

2019-07-29 01:21发布

在我的游戏,我有一个CCSprite是轨道另一个CCSprite ,很像一个电子轨道核。 我有电子为核心的孩子,使动画更简单。 我所要做的就是转动原子核和电子遵循一套相当不错。

不过,我的问题是来自希望有轨道动画显得有些snazzier,通过添加像粒子系统小道,或电子的路径进行,带状的效果。 我无法在粒子系统简单地添加到电子本身,因为颗粒不正确地遵循,因为它们是由原子核旋转为好。 如果我的粒子系统添加到self ,那么他们可以正常显示,但不是在相同的位置的对象,他们都应该是尾随。

我的问题是这样的:

有没有办法让一个对象的场景中的位置,比如说电子,而不是只能够访问它的相对位置,它的父?

谢谢。

Answer 1:

就在这里!

每个CCNode及其后代必须获得相对于场景的位置的能力:

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

这worldCoordinate将是相对于场景,而不是父节点!

希望这有助于! ^ _ ^



Answer 2:

稍后编辑:

当你这样做:

[aSprite convertToWorldSpace:position];

你实际上得到的aSprite的坐标系中的位置的全局坐标。 如果你想翻译aSprite对你要问它的父做翻译为你的全球空间中的位置,因为sprite.position已经在它的父母坐标系统。

希望这解释了它


原来的答案:

对我来说,这个解决方案没有奏效

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

底线:此代码解决了这个问题对我来说:

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

这是需要我的解决方案层次结构:myScene - > mySpriteParent - > mySprite上

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

解决方法1 - 错误的结果:

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

溶液2 - 正确的结果:

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

或许,这解决方案将帮助别人的同时,也许有人会解释为什么这个解决方案的工作,而不是其他



文章来源: Getting absolute position of CCSprite in cocos2d