cocos2d-------坐标系的转换
许久之后遇到问题,立马又来发了一篇。这次的内容跟C++无关,是有关cocos2d的一个小技术点————本地坐标与世界坐标
-----------------------------------------------------------------------------------------------
在cocos中有两种坐标系——本地坐标系和世界坐标系。
本地坐标系:
这个坐标系是基于节点以及层的坐标系,例如有两个节点——node1和node2,node1在Layer中,node2在node1中,那么获得的node1坐标是世界坐标系,获得node2坐标是本地坐标(两坐标是相互独立的),这里暂不讨论锚点,均为默认值。
在Layer中原点是(0,0),在节点node1中原点是(0.5,0.5)。。。有点小偏离话题。
最近在工作上遇到一个问题,做一个效果,从一个点移动到另一个点,除了动作用cc.MoveTo之外,其次还需要知道起始点以及终点,但是因为是动态改变,并不能使用固定数值,而具体的是从一个层的中点移动到一个节点的位置,但是麻烦的是这个节点跟这个层并不是父子关系,哎,伤脑经。。。
有人提供了两个方法让我去了解一下convertToWorldSpace、convertToNodeSpace,这里不谈后者(因为没用到。。。汗,没错,是小博懒)。
convertToWorldSpace将坐标转换成世界坐标,那么该怎么使用呢???
第一种:node1:convertToWorldSpace(node1:getPosition(cc.p(0,0)))
第二种:node1:getParent():convertToWorldSpace(node1:getPosition())
这两种都是可行的,首先解释一种
很明显节点坐标转换成世界坐标,以节点为参照,通过转换本地坐标原点(上文有讲述,在节点中的是本地坐标),获得的类型为世界坐标类型。
第二种方法
与第一种相比,参照物成了父层,而在此例中父层是Layer,它的坐标是世界坐标,因此获得的类型为世界坐标类型。
----------------------------------------------------------------------------------
苍白的文字至此结束,小博还会将自己遇到的问题逐渐的更新上来,希望对大家有所帮助,并且如有解释不到位之处,希望多多指正!!