有一个节点,这个节点有一个父节点,当父节点变换位置的时候,这个节点位置也会跟着变换。我想获取这个节点的世界坐标,但是这个节点在父节点的位置因为被固定了。每次都是为0.0。但是这个节点位于世界的位置是变的。如果用convertToWorldSpaceAR()。得到的数据是不变的,因为这个函数是先根据在父节点的位置再装换为世界坐标的,所以有什么方法可以直接获取节点的世界坐标?
1赞
node.parent.convertToWorldSpaceAR(node)
如果是有两个子节点在父节点的不同位置呢?怎么分别获取这两个子节点的世界坐标。
先求出本地坐标在用函数得出世界坐标
node1.parent.convertToWorldSpaceAR(node1);
node2.parent.convertToWorldSpaceAR(node2);
1赞
可不可以说一下原理是怎样的?这样是可以办到。
一个节点所处的坐标系实际上是它父节点的坐标系,因此使用父节点的convertToWorldSpaceAR函数。参数实际上应该传一个cc.Vec2(带x属性、y属性的一个对象),但是node本来就包含x属性、y属性,直接传进去也能计算。正确应该写:
node1.parent.convertToWorldSpaceAR(node1.position);
// 或
node1.parent.convertToWorldSpaceAR(cc.p(node1.x, node1.y));