cocos converToWordSpace

每次遇到cocos的坐标转换,总是反应不过来,今天就顺便总结一下,只要这样记住就行了。

比如一个精灵Sprite,不管这个Sprite他的父节点是谁。你都不用去关心。
好,现在我们把Sprite转换为世界坐标:
1.我们可以通过Sprite自行转换

auto size=Sprite->getContentSize();
 auto wordPos=Sprite->convertToWordSpace(Point(size.width/2,size.height/2));

以Sprite自身为一个节点,将他下面的点size.width/2,size.height/2转换为世界坐标,为什么是这个坐标,因为Sprite的默认锚点是0.5,0.5. 如果他的锚点是0.0,那么你因该这么写:

 auto wordPos=Sprite->convertToWordSpace(Point(size.width/2,size.height/2));
 2.不管你想怎么转换,我们是要告诉cocos我想将哪一个Node的哪一个pos转换为世界坐标就行了,他会自动帮你计算Node的最终父节点,然后帮你计算。所以我们还可以这样写:
 auto  wordPos=Sprite->getParent()->converToWordSpace(Sprite->getPosition());

将Sprite的父节点作为节点,然后去计算在Sprite的世界坐标。这个时候有一个好处,你就不用去担心Sprite的锚点问题了!

现在我们要将一个世界坐标转换为本地坐标,太简单了。但是要求你传入的参数一定是一个世界坐标
还是上面的例子,将Sprite转换为Node的本地坐标:

auto pos=Node.converToNodeSpace(Sprite->convertToWordSpace(Point(size.width/2,size.height/2)));

我们先要得到Sprite的世界坐标,我们才能将其转换为任意node的本地坐标。至于为什么要必须给世界坐标,这个当然很好理解的。cocos只有知道了世界坐标,他能正确的帮你转换为某个node的本地坐标。如果你直接给一个本地坐标,他就会把这个坐标当成世界坐标来帮你计算,那么明显不是你想要的结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值