关于convertToWorldSpaceAR 求大佬指点

是这样的:
1 、我有个canvas,宽1280,高720
2 、我把一个叫做tester的节点放在画布下,从工程里看他的位置是 -412,0
3、 我尝试取得tester在世界坐标系下的坐标
let testerWorldPos = this.node.convertToWorldSpaceAR(this.tester);
cc.log("哎呀坐标 :"+testerWorldPos );
4、这是观察到打印出的 testerWorldPos 是 228,360
5、也就是说,
this.node.convertToWorldSpaceAR(this.tester)
这里得到的坐标实际上是 它在工程里摆放位置的 x-640,y-360
640,360刚好是画布宽高的一半儿

求问各位大佬巨佬
为什么会这样?
如果我想直接得出 tester 相对于画布的坐标,应该怎么计算?

拜谢。

你的tester个本身就是直接在画布下,那他的坐标就是世界坐标,完全不需要转换

node.convertToWorldSpaceAR(pos)的意思是获得在node的坐标系中,以锚点为原点,pos这个坐标所对应的世界坐标(也就是屏幕左下),还有一个方法node.convertToWorldSpace,这个是以node的左下角为原点获取pos的世界坐标
所以你要获得某个节点坐标的世界坐标.一般是要调用他父节点的convertToWorldSpace/convertToWorldSpaceAR
注意这个方法和你传入什么节点无关,只与他的坐标有关,也就是说仅仅是数值计算,所以你不调用父节点的方法转换的话,得到的结果通常是没意义的

在你这个示例中,你的this.node应该是Canvas,调用convertToWorldSpaceAR,得到的结果是以Canvas的锚点为原点,(-412,0)这个点的世界坐标. 你可以在canvas下挂一个node放到(-412,0),在画布下再放一个节点,放到(228,360),它们肯定是重合的.

8赞

牛逼 。