Creator的坐标问题,请教为什么?

我写了一段代码,用于放每个棋子,坐标设置如下:
for(var i=0; i<1; i++){
for(var j=0; j<1; j++){
var node = cc.instantiate(this.starPrefab);
node.parent = scene;
node.x=-194.4+64.8i;
node.y=18.4+59.8
j;
}}
**由此可以看到,当i,j都是0时,第一个点的坐标是x=-194.4,y=18.4

在onload里我用的touch坐标代码:
this.chessfield.on(cc.Node.EventType.TOUCH_END, function(event){
//var cpos=event.getLocation(); //点击第一个点的位置,x坐标是52
var cpos=this.node.convertToWorldSpaceAR(event.getLocation()); //点击第一个点的位置,x坐标是199.8
var x1=cpos.x;
var y1=cpos.y;
x1=x1.toFixed(1);
y1=y1.toFixed(1);
var cpos1=this.node.convertToWorldSpaceAR(aa[0,0].position); //可以出数字x= -46.6
var x2=cpos1.x;
var y2=cpos1.y;
x2=x2.toFixed(1);
y2=y2.toFixed(1);
this.scoreDisplay.string = 'pos: ’ + x1 + ‘/’ + x2;
}, this);

现在问题来了:
第一段代码我设置第一个棋子的坐标是x=-194.4
我touch点击第一个棋子得到的世界坐标是x=199.8
最后一段代码我转换第一个棋子的坐标成为世界坐标,结果是x=-46.6

三个都不相同,这到底是怎么回事?怎么让我touch得到的坐标,和我第一个棋子本身的坐标相同?
谢谢大家!

var cpos1=aa[0,0].parent.convertToWorldSpaceAR(aa[0,0].position)

event.getLocation()获取到的世界坐标,用node.convertToNodeSpaceAR就可以转换成对应node的本地坐标了
也就是let touchPos = scene.convertToNodeSpaceAR(event.getLocation());

event.getLocation()已经是世界坐标了 不用再转了
最后一个这么写试试 aa[0,0].convertToWorldSpaceAR(cc.v2(0,0))

试过了,得到的还是x=-194,和touch到的坐标完全不同,关键是要touch得到的坐标,和aa[0,0]本身的坐标一致。谢谢你!

试过了,touch得到的还是x=52,和aa[0,0]的坐标不同,关键是要touch得到的坐标,和aa[0,0]本身的坐标一致。谢谢你!

谢谢你!这个之前试过了,得到的aa[0,0]坐标就是x=-194.4,还是和touch得到的坐标不一致。怎么转成一致的呢?

你这句要想做什么
convertToWorldSpaceAR这个函数本身就会返回一个世界坐标,需要传入一个以this.node锚点为原点的坐标,一般传入node的子节点的坐标或者和node宽高相关的坐标,你传入一个世界坐标本身就有问题,除非你的this.node的锚点的世界坐标和世界坐标的原点重合,才相当于一样
那么你的所有this.node符合吗

这句代码开始就是var cpos=event.getLocation();
因为老是和原来的aa[0,0].x不一致,aa[0,0].x=-194,怎么转都不行,所以死马当活马医,换了这句,确实没意义。

有啥解决办法吗?我要转成一样的坐标,便于比较,试了好多代码了,都没用。

如果event.getLocation()和aa[0,0].x不一致,就说明你的aa[0,0]的父节点的锚点和世界坐标的原点不重合,不一致是理所应当的吧

var cpos = aa[0,0].parent.convertToNodeSpaceAR(event.getLocation())
触点和节点的坐标点做相等比较是没有意义的,你没法做到刚好点中节点的锚点

aa[0,0].x就是aa[0,0]相对于父节点锚点的坐标,父节点如果个世界坐标原点重合,那就是相对于世界坐标原点的坐标,那就是世界坐标了
你要想转成一样的坐标,你描述一下你的节点树结构,想要相对于谁的坐标

如果你是在没办法,那就所有的node坐标都改用
worldPos = node.convertToWorldPosition(cc.v2());
都用世界坐标就不用考虑那么多了