【cocos creator】修改节点的父节点,保持绝对位置不变

要将一个节点更换到另一个父节点,同时保持其在世界坐标系中的绝对位置不变,可以按照以下步骤进行操作:

var node = cc.find("Canvas/Node"); // 替换为你的节点路径
var newParent = cc.find("Canvas/NewParent"); // 替换为新的父节点路径

// 将节点从当前父节点中移除
node.removeFromParent(false);

// 计算节点在世界坐标系中的位置
var worldPosition = node.convertToWorldSpaceAR(cc.Vec2.ZERO);

// 将节点设置为新的父节点
node.setParent(newParent);

// 根据之前计算的世界坐标位置,重新设置节点的位置
node.setPosition(newParent.convertToNodeSpaceAR(worldPosition));

在上述代码中,我们首先使用 cc.find() 方法找到目标节点和新的父节点。然后,使用 removeFromParent(false) 将节点从当前父节点中移除,保留其世界坐标位置。

接下来,使用 convertToWorldSpaceAR(cc.Vec2.ZERO) 方法计算节点在世界坐标系中的位置。

然后,使用 setParent(newParent) 方法将节点设置为新的父节点。

最后,使用 convertToNodeSpaceAR(worldPosition) 将之前计算的世界坐标位置转换为新父节点的本地坐标,并通过 setPosition() 方法设置节点的位置,以保持绝对位置不变。

猜你喜欢

转载自blog.csdn.net/weixin_41093846/article/details/131391398