在cocos2d中获取CCSprite的绝对位置
在我的游戏中,我有一个CCSprite
, CCSprite
另一个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的工作,而不是其他