最近做感觉遇到的最多的就是坐标问题,感觉需要总结一下,不废话,直接上我的结论
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()也还是没有缩放的值,这样会造成取得值比实际值(世界坐标下)大一倍。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。