考虑一下:您在Cocos2D 2.0上创建一个新项目。你有传统的Helloworld层。使用以下结构向其添加图层:
Helloworld (cclayer)
│
┕━ baseLayer (cclayer)
│
┕━ myReducedNode [CCSprite node]
│
┕━ myFullSprite (ccsprite)
│
┕━ smallSprite (ccsprite)
考虑一下这种疯狂:
我说的是本地坐标,我的意思是,smallSprite的位置在myFullSprite中。
造成这种情况的原因是什么?此数字没有明显的逻辑......此数字与应用于顶级节点的比例无关。
我在这里缺少什么?我在墙上撞了好几天,试图弄清楚这个难题!感谢。
更多信息。我希望这有助于找出坐标具有这些值的原因......
答案 0 :(得分:0)
我认为你应该看看convertToWorldSpace:
,因为你正在缩放和嵌套事物,转换很可能适用于那些坐标。
这里有一个可能有用的question,而且post on cocos2d也是
答案 1 :(得分:0)
试试这个:
CGPoint smallSpriteLocalPosition;
smallSpriteLocalPosition =
[smallSprite.parent convertToNodeSpace:smallSprite.position];
然后打印出那些坐标,看看它们是否正确注册。这应该为您提供相对于其父级fullSprite的smallSprite的节点(本地)坐标。您还应该能够转换ToWorldSpace以获取窗口范围内的坐标。
在过去与儿童精灵合作时,这对我有用;它可能有点棘手。确保在转换调用中使用正确的变量,否则您将无法获得正确的数据。让我知道这是否有效,因为我还没有尝试过三层深的图层。
答案 2 :(得分:0)
经过一些代码更改和几天的研究和尝试后,我得出结论这是Cocos2D的一个错误,或者层,精灵和节点的工作方式之间缺乏一致性(正如LearnCocos2d所建议的那样),因为没有办法解释获得的值。我将尝试填写关于该错误的报告。