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

相关推荐
chaoyuanl42 分钟前
超元力主题乐园飞行影院:把景区文化做成可持续更新的沉浸体验
大数据·3d·xr·娱乐·mr
姓林君2 小时前
分享一个ZW3D二次开发查接口写示例的Agent_MCP工具
3d
熊猫钓鱼>_>5 小时前
从拍照到建模:HarmonyOS 7 3DGS端侧重建完整实战指南
人工智能·3d·ai·harmonyos·arkts·鸿蒙·3dgs
李航19838 小时前
用 DeepDraw 几何引擎开发建筑设计软件(五):创建选择工具
python·3d
微财经观圈21 小时前
AI 3D生成工具重拓扑后怎样检查UV、法线和材质是否正常?
人工智能·3d·重拓扑
Zldaisy3d1 天前
一种具备优异带外抑制特性的增材制造滤波超表面
3d
CAD芯智库1 天前
中望3D悟空2027亮点速递(1)-全新单手鼠标交互和特征树显示提效
经验分享·科技·3d·业界资讯·国产三维cad软件·中望3d悟空·中望3d2027
微财经观圈1 天前
AI 3D生成角色怎样套用预设动作?自动绑骨与动作测试步骤
人工智能·3d
菩提树下的凡夫1 天前
激光振镜双目结构光3D相机丢点问题
数码相机·3d
70asunflower1 天前
Python_3D建模与HTML预览开发指南
人工智能·3d·ai agent