CocosCreator 不同节点坐标互相转换,不管俩节点差几层,节点树上离多远都通用
以下代码是typescript
/** 把 node1移动到 node2的位置 */
public static moveN1toN2(node1: cc.Node, node2: cc.Node) {
node1.position = node1.parent.convertToNodeSpaceAR(node2.parent.convertToWorldSpaceAR(node2.position))
}
/** 获取把 node1移动到 node2位置后的坐标 */
public static convertNodeSpaceAR(node1: cc.Node, node2: cc.Node) {
return node1.parent.convertToNodeSpaceAR(node2.parent.convertToWorldSpaceAR(node2.position))
}
解释:
cocos引擎的世界坐标以Canvas左下角为原点;
convertToNodeSpaceAR的输入参数是个世界坐标,返回值是相对于节点的局部坐标;
convertToWorldSpaceAR的输入参数是节点相对坐标,返回值是世界坐标;
如果要把A节点的坐标转换为相对于B节点的坐标,应先把A坐标转换为世界坐标,然后再把得到的世界坐标转换为B坐标;注意转坐标时应该以父节点为基准,形如node.parent.convertToXXXXSapceAR(node.position)