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

相关推荐
3D小将13 小时前
3DXML转GLTF技术文档(推荐免费在线转换网站)
3d·solidworks模型·ug模型·rhino模型·sketchup模型·igs模型·迪威模型网
孪生引擎观星台14 小时前
WSBK专业赛车场3D数字孪生Demo快速开发与系统落地实战指南
人工智能·3d
Yao.Li15 小时前
PVN3D ONNX 转换与测试记录
人工智能·3d·具身智能
Gkoob17 小时前
Vue3+Three.js 打造实时设备状态 3D 可视化面板
开发语言·javascript·3d
syncon1219 小时前
手机液晶屏幕AOI异常检测及液晶线路激光修复原理方法
科技·3d·制造
CG_MAGIC2 天前
Blender场景搭建:寻找德尔蒙
3d·blender·贴图·建模教程·渲云渲染
葛兰岱尔2 天前
如何实现Revit、Bentley等模型转换为glTF/GLB、3DTiles等通用3D模型,同时实现模型结构属性数据的提取导出并保持与几何数据的一一对应?
3d
CG_MAGIC2 天前
SketchUp 大图渲染优化:清理废线 + 压缩模型,彻底解决卡顿
3d·blender·贴图·效果图·渲云渲染
Yao.Li2 天前
PVN3D 训练与评估代码流程详解
人工智能·3d
云飞云共享云桌面2 天前
8人SolidWorks研发共享一台服务器——性能算力共享智能按需分配
运维·服务器·网络·数据库·3d·电脑