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测量2 小时前
宠物的关节、牙齿等部位的光学三维扫描测量逆向-激光三维扫描仪
科技·3d·制造
深蓝学院2 小时前
港科大沈劭劼团队|VG3S:不微调、不遗忘,即插即用实现高精度3D占用预测
3d·自动驾驶
小小码农Come on4 小时前
VTK-8.2.0+QT5.14.2展示3D图像
qt·3d·swift
沙振宇5 小时前
【Web】使用Vue3+PlayCanvas开发3D游戏(二)3D 地图自由巡视闯关游戏
游戏·3d·vue3·playcanvas
新启航光学频率梳5 小时前
齿轮箱传动轴孔孔深光学3D轮廓测量-激光频率梳3D轮廓技术
科技·3d·制造
青稞社区.5 小时前
MIT&Harvard 最新提出 PAGE-4D:让 3D 模型“看懂“动态世界的统一框架
人工智能·3d
CG_MAGIC6 小时前
V-Ray 光照贴图烘焙参数适配教程
3d·blender·贴图·效果图·建模教程·渲云渲染
一只不会编程的猫7 小时前
Echart 3D环形图
前端·javascript·3d
云飞云共享云桌面7 小时前
广东某智能装备工厂8人共享一台服务器
大数据·运维·服务器·人工智能·3d·自动化·电脑
qq_283720057 小时前
WebGL 基础教程(十):从 0 到 1 吃透 MVP 矩阵,3D 旋转立方体手到擒来
3d·矩阵·webgl