点A移动到点B,B有父节点,坐标如何转换?

cc.Class({
extends: cc.Component,

properties: {
    pointA: cc.Node,
    pointB: cc.Node
},

// use this for initialization
onLoad: function () {
    //var moveTo = cc.moveTo(0.5, cc.p(this.moveBy.parent.x, this.moveBy.parent.y));
    console.log("start A:"+this.pointA.getPosition());
    console.log("start B:"+this.pointB.getPosition());
    console.log("start B parent:"+this.pointB.parent.getPosition());

    var pos4 = this.pointB.convertToWorldSpaceAR(this.pointB.getPosition());
    var pos5 = this.pointA.convertToNodeSpaceAR(pos4);
    
    var moveTo = cc.moveTo(0.5, pos5);
    var self = this;
    var callFunc = cc.callFunc(function(){
        console.log("end A:"+self.pointA.getPosition());
        console.log("end B:"+self.pointB.getPosition());
        console.log("end B parent:"+self.pointB.parent.getPosition());
    }, this);
    var seq = cc.sequence(moveTo, callFunc);
    this.pointA.runAction(seq);
}

});
如图,怎么转点A都无法移动到点B,求大神解答

1赞

convertToWorldSpace和convertToNodeSpace也不行

convertToWorldSpaceAR,convertToNodeSpaceAR

不行的,还是不对

var pos4 = this.pointB.convertToWorldSpaceAR(this.pointB.getPosition());
这里写成:
var pos4 = this.pointB.convertToWorldSpaceAR(cc.p(0,0));
要把B点自身的(0,0)坐标转换成世界坐标才行。
或者写成:
var pos4 = this.pointB.parent.convertToWorldSpaceAR(this.pointB.getPosition());
这两种写法你琢磨下,相对坐标和绝对坐标的转换思路。

应该写成:

var pos4 = this.pointB.convertToWorldSpaceAR(cc.p(0,0));
var pos5 = this.pointA.parent.convertToNodeSpaceAR(pos4);
var moveTo = cc.moveTo(0.5, pos5);
1赞

是哦,pos5也要改成子龙大大的写法。我就盯着一个pos4而忽略了pos5也有错误了