cocos2d getPosition()取不到实际坐标问题

最近做感觉遇到的最多的就是坐标问题,感觉需要总结一下,不废话,直接上我的结论

1、cocos2d,节点认坐标(0,0),认锚点(0.5,0.5),顶点节点(最上层节点)的坐标以世界坐标为基准(也就是此节点的坐标(0,0)就是世界坐标的(0,0))。认层次若没有声明Z坐标,则先addchild()的在下层,后addchild()的在上层(上层覆盖下层),认父节点在子节点上层。

2、getposition()获取子节点坐标时,获取到的不是世界坐标,而是节点坐标,也就是相对父节点左下角的坐标,也就是以父节点的左下角(锚点0,0)为新坐标的原点形成的新坐标。这样很容易弄错的说,要获取子节点世界坐标,可以用这个语句:要获取CCNode *obj;的世界坐标

CCPoint objpoint = obj->getParent()->convertToWorldspace(obj->getPosition()));

还有一点容易忽略,我们在对一个节点进行包装的时候其实就是让这个节点有了父节点,例如我新建了一个map类,在map类里面添加了两个background精灵,这样其实background是map的内嵌对象,这样map就是两个精灵的父节点,我取background的坐标其实取的是相对父节点的坐标。

(ps:详解见我的另外一篇文章

3、对父节点进行的移动会造成它的所有子节点会随着父节点移动,这样结论2也验证了对随父节点运动的子节点取getPosition()的值不会改变事实.

同时,对父节点取setScale(),子节点也会缩放,但是对子节点取getPosition()也还是没有缩放的值,这样会造成取得值比实际值(世界坐标下)大一倍。

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...