新手请教,坐标如何转换?

如何让一个方块,到鼠标点击的位置,鼠标点击的坐标值怎么转换成为节点的位置?
谢谢!

/** 世界坐标 转换相对节点的坐标 */

public getToNodePosForWorld(wPos: cc.Vec2, Thisnode: cc.Node) {

    return Thisnode.convertToNodeSpaceAR(wPos);

}


上面这个,第一个就是鼠标点击的坐标,第二个就是使用转换后的坐标,还是很大,最后一个是节点当前的坐标,只是个位数,一赋值就不知道跑哪里去了


let Pos = event.getLocation();

    let v3Pos = new Vec3(Pos.x,Pos.y,0);

    const uiTrans = this.node.parent.getComponent(UITransform);

    let locPos = uiTrans.convertToNodeSpaceAR(v3Pos);//世界坐标转还为节点坐标

    let locPos1 = uiTrans.convertToWorldSpaceAR(v3Pos);

    let oldPos = this.node.parent.position;

    console.log('mouse position: '+Pos+ ' converted postion: '+locPos+'converted worldSpaceAR pos: '+locPos1+' node curPosition: '+oldPos);

另外我这里,This.node 下没有convertToNodeSpaceAR这些转换函数,所以用了UITransform组件,不知道是不是这样

是getUILocation

image
一样,提示没有convertToNodeSpaceAR这个函数

let Pos = event.getUILocation();

    let v3Pos = new Vec3(Pos.x,Pos.y,0);

    let locPos = this.node.parent.convertToNodeSpaceAR(v3Pos);//世界坐标转还为节点坐标

    this.node.parent.setPosition(locPos);

    console.log(locPos);

this.node.parent.getComponent(UITransform).convertToNodeSpaceAR
或者直接设置世界坐标
this.node.parent.setWorldPosition

这个api移到UITransform里面了

1赞

image

转换后,这坐标值都很大,节点一下子不知道跑哪里去了(节点初始坐标只是个位数的)

设置世界坐标也不知道跑哪里去了
let Pos = event.getUILocation();

    let v3Pos = new Vec3(Pos.x,Pos.y,0);

    this.node.parent.setWorldPosition(v3Pos);

    console.log(v3Pos);

3D的啊···
3D的用射线检测

这么高深吗?有没有示例源代码?网上找到那些案例都没有涉及到这个

https://gitee.com/yeshao2069/cocos-creator-how-to-use/tree/v3.7.x/proj/Demo/Creator3.7.0_ScreenToWorldPoint

1赞

这么好的网址,官方可以发个置顶帖:置顶汇总各个高质量的示例汇总网址,新人进来也就不用到处乱找到处迷茫了

这个必须要加UITransform吗