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

相关推荐
cd_9492172112 小时前
为什么AI3D创作中贴图材质尤为重要?因为它决定模型能否成为可用资产
人工智能·3d·贴图
苏州邦恩精密21 小时前
浙江蔡司3D扫描仪如何服务汽车及模具行业?
人工智能·科技·3d·自动化·汽车·制造
3D小将1 天前
3D格式转换之NWD 转 GLB 格式标准化转换技术
3d·solidworks模型·ug模型·rhino模型·catia模型
玖玥拾1 天前
Unity 3D 基础(一)Unity基础架构、物理系统、视觉渲染、空间变换与对象查询
笔记·游戏·3d·unity·游戏引擎
在水一缸1 天前
Box3D 深度解析:当物理引擎传奇迈向三维空间
3d·游戏开发·开源项目·物理引擎·box3d·3d仿真·box2d
苏州邦恩精密1 天前
浙江蔡司3D扫描仪应用领域及厂家选择分析
人工智能·科技·3d·自动化·制造
TMT星球1 天前
高德发布通用世界模型工坊ABot-World Studio: 5090单卡可生成小时级实时交互式视频与3D场景
3d
某林2121 天前
构建高精度 6-DoF 灵巧手控制系统
人工智能·3d·机器人·ros2·技术复盘
3DVisionary1 天前
注塑模具3D检测的下一个十年:从“事后把关“到“全程数字孪生“
前端·数据库·3d·注塑模具检测趋势·在线全检自动化·ai缺陷识别·模具数字孪生
cd_949217211 天前
3D角色自动绑骨怎么做?用V2Fun完成建模、绑定、动作和导出
人工智能·3d