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


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值