范例集合里面TouchInput场景里面关于世界坐标系的问题

想查看下父节点以及世界坐标系之间的关系。
打印出4个console.log.

cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
onTouchBegan: function(touch, event) {
var touchLoc = touch.getLocation();
self.isMoving = true;
self.moveToPos = self.follower.parent.convertToNodeSpaceAR(touchLoc);
var noARworld= self.follower.parent.convertToWorldSpace(touchLoc);
var noARNode= self.follower.parent.convertToNodeSpace(touchLoc);
var worldPos=self.follower.parent.convertToWorldSpaceAR(touchLoc);

            console.log(self.moveToPos);
            console.log(noARworld);
            console.log(noARNode);
            console.log(worldPos);
            return true; // don't capture event
        },

精灵的父节点是canvas, 锚点是(0.5,0.5)
第一个向量是点击位置在父节点canvas上坐标,没有什么问题
第二个向量是点击位置在世界坐标系上的坐标,其实就是canvas,是吧,这个没有AR不已锚点参照,也没有什么问题。
第三个向量是点击位置在父节点canvas上坐标,这个没有AR不已锚点参照,也没有什么问题。
所以第二个向量和第三个向量是一样的。
问题在第四个向量,不知道世界坐标系的锚点是怎么取的,怎么会比第二个向量大,我不懂。有哪位大师帮忙解释下啊?

2赞

向量不清楚,请看下面

1.1.1
SpriteFollowTouch.js:37 Vec2 {x: 215, y: 159} -> self.follower.parent.convertToNodeSpaceAR(touchLoc);
SpriteFollowTouch.js:38 Vec2 {x: 695, y: 479} -> self.follower.parent.convertToWorldSpace(touchLoc);
SpriteFollowTouch.js:39 Vec2 {x: 695, y: 479} ->self.follower.parent.convertToNodeSpace(touchLoc);
SpriteFollowTouch.js:40 Vec2 {x: 1175, y: 799} ->self.follower.parent.convertToWorldSpaceAR(touchLoc);

还有一个小问题
var oldPos = this.follower.position;
在API里面没有查到这个单独的position的用法
不过我试了下,跟getPosition()的用法是一样的。

请问有没有哪位大师知道啊

我这么求知若渴,居然被忽略掉了。是不是问的问题太无聊了。

@Knox: 大师能帮忙解释下吗?

convertToWorldSpaceAR 用于将本地坐标转换成世界坐标。touchLoc 必须是相对 parent 的本地坐标,否则转换结果没有意义。

大师,你的意思是说这个数值Vec2 {x: 1175, y: 799} 其实是没有意义的吗?

那么以此类推,这个也是没有意义的,差别就是有没有AR。可是这个结果和父节点canvas上的坐标是一样的。
SpriteFollowTouch.js:38 Vec2 {x: 695, y: 479} -> self.follower.parent.convertToWorldSpace(touchLoc);

convertToWorldSpace 是相对父节点的左下角进行变换,父节点左下角不就是 0, 0 点么?因为是 0, 0 所以坐标就是一样的了。

这个我明白。
我不明白的是如果用convertToWorldSpaceAR的得到的向量的锚点的具体位置在哪里。似乎既不是在屏幕中间也不是在左下角。否则数值不会比convertToWorldSpace得出的结果大。

如果该节点没有旋转缩放,就是该节点的锚点所在位置(也就是 position 坐标所在位置)加上传入参数的坐标值。

额。。。不知道是不是我表述不清。概念我是懂的,就是就此案例讨论,打印出来的这个向量让我不知道世界坐标系的锚点在哪里。
你看,如果没有AR,那么锚点是在左下角,打印出来是这个向量的数值 Vec2 {x: 695, y: 479}
如果,如果有AR,是这个值 Vec2 {x: 1175, y: 799}
以左下角为参照点的出来的x,y值 Vec2 {x: 695, y: 479}应该已经是最大值了,那么这个向量的Vec2 {x: 1175, y: 799}的值还要大,是不是说明世界坐标系的锚点还要在更加左下角的地方,都不在屏幕里面了,这可能吗?

如果有 AR,那么转换的基准点就是 anchor 所在位置,也就是 position 所在位置。position 肯定比左下角大啊?

原来如此,这正是我之前无法理解的地方,原来确实是比左下角更左下角,谢谢大师!

不客气!!!