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

cocos2d getPosition()取不到实际坐标问题,第1张

概述最近做感觉遇到的最多的就是坐标问题,感觉需要总结一下,不废话,直接上我的结论 1、cocos2d,节点默认坐标(0,0),默认锚点(0.5,0.5),顶点节点(最上层节点)的坐标以世界坐标为基准(也就是此节点的坐标(0,0)就是世界坐标的(0,0))。默认层次若没有声明Z坐标,则先addchild()的在下层,后addchild()的在上层(上层覆盖下层),默认父节点在子节点上层。 2、getpo

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

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()也还是没有缩放的值,这样会造成取得值比实际值(世界坐标下)大一倍。

总结

以上是内存溢出为你收集整理的cocos2d getPosition()取不到实际坐标问题全部内容,希望文章能够帮你解决cocos2d getPosition()取不到实际坐标问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1024990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存