diff --git a/CreatorUtils/PointConvert.js b/CreatorUtils/PointConvert.js new file mode 100644 index 0000000..8aace8c --- /dev/null +++ b/CreatorUtils/PointConvert.js @@ -0,0 +1,89 @@ + +/** + * 得到一个节点的世界坐标 + * node的原点在中心 + * @param {*} node + */ +function localConvertWorldPointAR(node) { + if (node) { + return node.convertToWorldSpaceAR(cc.v2(0, 0)); + } + return null; +} + +/** + * 得到一个节点的世界坐标 + * node的原点在左下边 + * @param {*} node + */ +function localConvertWorldPoint(node) { + if (node) { + return node.convertToWorldSpace(cc.v2(0, 0)); + } + return null; +} + +/** + * 把一个世界坐标的点,转换到某个节点下的坐标 + * 原点在node中心 + * @param {*} node + * @param {*} worldPoint + */ +function worldConvertLocalPointAR(node, worldPoint) { + if (node) { + return node.convertToNodeSpaceAR(worldPoint); + } + return null; +} + +/** + * 把一个世界坐标的点,转换到某个节点下的坐标 + * 原点在node左下角 + * @param {*} node + * @param {*} worldPoint + */ +function worldConvertLocalPoint(node, worldPoint) { + if (node) { + return node.convertToNodeSpace(worldPoint); + } + return null; +} + +/** + * * 把一个节点的本地坐标转到另一个节点的本地坐标下 + * @param {*} node + * @param {*} targetNode + */ +function convetOtherNodeSpace(node, targetNode) { + if (!node || !targetNode) { + return null; + } + //先转成世界坐标 + let worldPoint = localConvertWorldPoint(node); + return worldConvertLocalPoint(targetNode, worldPoint); +} + +/** + * * 把一个节点的本地坐标转到另一个节点的本地坐标下 + * @param {*} node + * @param {*} targetNode + */ +function convetOtherNodeSpaceAR(node, targetNode) { + if (!node || !targetNode) { + return null; + } + //先转成世界坐标 + let worldPoint = localConvertWorldPointAR(node); + return worldConvertLocalPointAR(targetNode, worldPoint); +} + +module.exports = { + localConvertWorldPointAR, + localConvertWorldPoint, + worldConvertLocalPointAR, + worldConvertLocalPoint, + convetOtherNodeSpaceAR, + convetOtherNodeSpace +}; + + diff --git a/CreatorUtils/README.md b/CreatorUtils/README.md new file mode 100644 index 0000000..0bfce0c --- /dev/null +++ b/CreatorUtils/README.md @@ -0,0 +1,2 @@ +# Creator常用工具类 +* PointCovert 坐标转换工具