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

相关推荐
CG_MAGIC11 小时前
Blender《废弃房屋》的制作过程
3d·blender·贴图·效果图·建模教程
码农三叔14 小时前
(10-2)大模型时代的人形机器人感知:3D大模型与场景理解
人工智能·机器学习·计算机视觉·3d·机器人·人形机器人
yeflx15 小时前
从3D到2D:相机投影的完整解析
数码相机·3d
新启航光学频率梳15 小时前
航空航天支架孔深光学3D轮廓测量-激光频率梳3D轮廓技术
科技·3d·制造
七77.15 小时前
【世界模型】UrbanWorld: An Urban World Model for 3D City Generation
3d·世界模型
给算法爸爸上香1 天前
web网页显示点云
前端·3d·web·点云
V搜xhliang02461 天前
3D 点云处理(PCL)
人工智能·目标检测·计算机视觉·3d·分类·知识图谱
weixin_505154461 天前
博维数孪创新引领,3D作业指导助力制造业升级
大数据·人工智能·3d·数字孪生·数据可视化·产品交互展示
twe77582581 天前
“揭开3D IC封装的神秘面纱:动画演绎芯片堆叠的艺术“
科技·3d·制造·动画
CHENJIAMIAN PRO1 天前
3D Tiles 2.0 技术审查整理笔记
笔记·3d