举个例子
图中的node1对应sprite1,node2对应sprite2.
坐标.jpg
1 convertToNodeSpace
理解:相当于我们将sprite2这个节点添加到(实际没有添加,只是这样理解)sprite1这个节点上,那么就需要使用sprite1这个节点的节点坐标系统,这个节点的节点坐标系统的原点在(20,40),而sprite1的坐标是(-5,-20),那么经过变换之后,sprite1的坐标就是(-25,-60)。
Point point1 = sprite1->convertToNodeSpace(sprite2->getPosition());
即:(-5-(20),-20-(40))即(-25,-60)
2 convertToWorldSpace
理解:此时的变换是将sprite2的坐标转换到sprite1的世界坐标系下,而其中世界坐标系是没有变化的,始终都是和OpenGL等同,只不过sprite2在变换的时候将sprite1作为了”参照“而已。所以变换之后sprite2的坐标为:(15,20)
通俗一点理解就是,sprite2的坐标在sprite1节点左下角(原点)坐标的基础上加上sprite2的坐标(也即基于sprite1原点的平移,平移坐标就是sprite1的ccp(-5,-20))就可以得到sprite2变换后的坐标:(15,20)=sprite1原点坐标(20,40)+ 平移(-5,-20)
Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());
3
convertToNodeSpaceAR
convertToWorldSpaceAR
就是在1,2的基础上加上锚点。
4 得到本节点的世界坐标
auto mWorldPosi=node->convertToWorldSpaceAR(Vec2(0,0));
网友评论