如何点击屏幕创建3D物体

需求是在3D场景里 点击屏幕后 创建一个3D物体在点击的位置。。试了半天位置不对劲。
现在是在UI上接收监听,然后转换到世界坐标,位置总是差的很远。
谁有思路呀

就是一个2d坐标转3d坐标吧。

我现在是这样的
let pos = touch.getUILocation
然后Camera.screenToWorld(v3(pos.x,pos.y))
这个world坐标不对。

试试这个是否可以解决

谢谢 我试试

不对劲 这个role上怎么还有ui组件。

要从摄像机到点击点生成一条射线,这个射线和3D地面的碰撞点就是物体的生成坐标。

我直接一个豁然开朗,谢谢思路

就是射线碰撞点就是可以了

    let ray = this.camera.screenPointToRay(touch.getLocationX(), touch.getLocationY());
    let comps = this.modelNode.getComponentsInChildren(MeshRenderer);
    let distance = Number.MAX_VALUE;
    for (let i = 0; i < comps.length; ++i) {
        if (comps[i].model) {
            let dis = geometry.intersect?.rayModel(ray, comps[i].model!, { mode: geometry.ERaycastMode.CLOSEST, doubleSided: false, distance: Number.MAX_SAFE_INTEGER });
            if (dis && dis < distance) {
                distance = dis;
            }
        }
    }
    if (distance == Number.MIN_VALUE) {
        return;
    }
    let out = v3();
    ray.computeHit(out, distance);

谢谢,刚刚楼上也是这样说的 已经成功了 谢谢大家