cocos 触摸2d屏幕拖动3d节点思路

根据屏幕点击的2d坐标,以及3d摄像机,生成一条带方向的3d射线检测,被射线碰撞的物体,就可以获取到射线碰撞到3d物体上的具体坐标点,然后根据这个坐标点设置被拖动3d节点的位置。

核心代码:

javascript 复制代码
//触摸移动
    onTouchMove(event: EventTouch) {

        //射线检测是否碰到其他方块,并修改显示颜色。
        let touchPos = event.getLocation();
        console.log('触摸移动:', touchPos,event.touch);
        if (!this.dragNode) { //有拖拽节点才进行移动。
            return;
        }
        //拖拽
        let point = new Vec3(1, 1, 0);
        // this.dragNode.setPosition(point);

        let ray = this.mainCamera.screenPointToRay(touchPos.x, touchPos.y);
        // console.log('ray',ray,PhysicsSystem.instance.raycastClosest(ray))
        if (PhysicsSystem.instance.raycastClosest(ray)) {
            const res = PhysicsSystem.instance.raycastClosestResult;
            console.log('移动位置:',res.hitPoint)
            const hitNode = res.collider.node;
            // this.dragNode.setPosition(res.hitPoint.x,res.hitPoint.y,res.hitPoint.z);
            this.dragNode.setPosition(res.hitPoint.x,1,res.hitPoint.z);
            if (hitNode.name.startsWith('tiled')) {
                this.cancelTiled();
                hitNode.getComponent(MeshRenderer).material = this.tiledImgActive;
                this.tiledNodeActive = hitNode;

            } else {
                this.cancelTiled();
            }
        } else {
            this.cancelTiled();
        }
    }

核心属性:res.hitPoint

相关推荐
jiayong232 小时前
数字孪生、虚拟仿真、3D建模 概念区别联系与技术清单
3d·3d建模·数字孪生·虚幻引擎
lqqjuly6 小时前
3D 视觉与点云处理(3D Vision & Point Cloud Processing)
人工智能·3d·目标跟踪
AI视觉网奇9 小时前
免费3d资产下载网站
3d
蓝速科技9 小时前
蓝速科技 3D 全息数字人舱:像真人一样的交互体验展示
科技·3d·交互
谷谷地图下载器1 天前
全球、台湾省的无水印·街景数据(离线数据),专为可视化项目定制,支持国产化
javascript·c++·3d·arcgis·sqlite
福建佰胜张工1 天前
3DX-RAY 便携式 X 射线系统系列技术解析与应用指南
3d·智能手机·自动化
大江东去浪淘尽千古风流人物1 天前
【SharpSLAM】无人机高速飞行下的物体级视觉 SLAM:GAN 去模糊与 3D 重建联合优化
生成对抗网络·3d·无人机·slam·3d重建·deepsdf·去模糊
福建佰胜张工1 天前
3DX-RAY 生产线系统 MDXi-NT 技术解析与应用指南
人工智能·3d·自动化
朗迪锋1 天前
数字孪生如何成为工人安全的“隐形护甲”?
人工智能·安全·3d·数字孪生·数智孪生
jiayong231 天前
3D 建模、虚拟仿真需要哪些技术
3d·3d建模·虚拟仿真