在我的游戏,我有一个CCSprite
是轨道另一个CCSprite
,很像一个电子轨道核。 我有电子为核心的孩子,使动画更简单。 我所要做的就是转动原子核和电子遵循一套相当不错。
不过,我的问题是来自希望有轨道动画显得有些snazzier,通过添加像粒子系统小道,或电子的路径进行,带状的效果。 我无法在粒子系统简单地添加到电子本身,因为颗粒不正确地遵循,因为它们是由原子核旋转为好。 如果我的粒子系统添加到self
,那么他们可以正常显示,但不是在相同的位置的对象,他们都应该是尾随。
我的问题是这样的:
有没有办法让一个对象的场景中的位置,比如说电子,而不是只能够访问它的相对位置,它的父?
谢谢。
就在这里!
每个CCNode及其后代必须获得相对于场景的位置的能力:
CGPoint worldCoord = [mySprite上convertToWorldSpace:mySprite.position];
这worldCoordinate将是相对于场景,而不是父节点!
希望这有助于! ^ _ ^
稍后编辑:
当你这样做:
[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
或许,这解决方案将帮助别人的同时,也许有人会解释为什么这个解决方案的工作,而不是其他