var canvasPos = canvas.convertToNodeSpace(worldPos); 为什么返回的是世界坐标(结果canvasPos = worldPos),而不是相对于canvas的坐标.
canvas 本来就是根节点,它的父节点就是世界。所以 canvas 的 node space 当然就是 world space。
设计分辨率为1080*1920,canvas默认的position是(540,960), 我用canvas.convertToWorldSpace(cc.p(0,0))得到的是(0,0)点,你的意思是canvas的坐标原点就是世界坐标系的原点么? 那么(540,960)是什么意思啊?而且我用canvas的一个子节点node测试 node.getPosition()是相对于父节点canvas的坐标,但是node.convertToWorldSpace(cc.p(0,0))得到得却不是相对于canvas的坐标,而是相对于屏幕左下角的坐标。现在我想知道的就是世界坐标原点到底是canvas的坐标原点还是屏幕左下角?
以下是个人见解,不保证百分之百准确,仅供参考
世界坐标系是在屏幕左下角
这里的0,0这个坐标是相对于Canvas(忽略锚点,也就是不管Canvas锚点在哪里,0,0始终在Canvas的左下角),也就是Canvas的左下角,而Canvas的左下角又刚好和世界坐标系原点重合,所以你转换成世界坐标系后还是0,0,如果使用convertToWorldSpaceAR的话,这里的0,0 就是相对于Canvas的锚点的位置,也就是你Canvas锚点在哪里,0,0就在哪里,所以得到的就是你Canvas的锚点相对于世界坐标系的位置
这里的getPosition的确是获取当前节点的锚点位置相对于父节点锚点位置的偏移量
而这里你是将node的0,0(忽略锚点,也就是node的左下角)这个位置转换为世界坐标,所以得到的位置应该是node的左下角相对于世界坐标系原点的偏移量
如果你要获取node在世界坐标系的位置,应该使用Canvas.converToWorldSpaceAR(node),这样才能获取node在世界坐标系的position
所以你一楼的代码是忽略锚点的,所以你转换的坐标是相对于Canvas的左下角的,所以是和世界坐标系重合的,如果你是要得到相对于Canvas锚点的位置(也就是相对于Canvas中心位置),应该使用convertToNodeSpaceAR,也就是
var canvasPos = canvas.convertToNodeSpaceAR(worldPos)
这样canvasPos就是相对于Canvas锚点位置(Canvas的中间)的偏移,就是你想要的了
以上仅供参考
正解,我反正从没用过不带 AR 版本的 API,用 AR 后缀的就对了
大神,我说我是看到这篇帖子才去测试,才理解两个的区别你相信吗?
测试了一下 确实是不带AR的API忽略锚点的问题 因为不常用所以不太了解 非常感谢!!!
不客气,解决问题了就行
嗯,我相信 
实测 node.convertToNodeSpaceAR(cc.p(0,0)) 也是左下角 并非canvas锚点
给个demo看看?有问题好让官方大神解决
一行代码 还需要传Demo 反正我现在是 官方爱改不改
发现问题了 心情好就在论坛上反馈一下 心情不好就算了 反正就算反馈了 没有结果的概率也是90% 就算有结果了 也未必会修正
心冷了
我刚刚测试了一下,没有你说的问题