[LayaAir2]【求助】【layaAir2.12】定义远端轴心放大节点后, 碰撞体放大,但是碰撞体偏离了图形

放大前 

放大后 
其中所有球体节点轴心点位于棋盘中心
且棋盘于球体并联关系,无父子关系
遍历球体和棋盘进行的直接放大 ,执行一次放大后,初步排查碰撞体按照球体节点的轴心点(0,0)放大,发现碰撞体没有参考棋盘中心放大,
 
 
 zoom(x, y, delta) {
       
            let g = this;
            let p = g.getChildByName("pivot");
//轴心点坐标,棋盘中心坐标
            let byPivotX = p.x;
            let byPivotY = p.y;
            let owerChirldNum = g.numChildren;
            console.log("p.sacleX"+p.scaleX+"delta"+delta);
            if((p.scaleX<0.7&&delta<0)||(p.scaleX>1.5&&delta>0))
            return true;
            let a=[];
     
            let ns = 0;
            if (delta > 0) {
                ns += 0.05;
            }
            else {
                ns -= 0.05;
            }          
            for (var i = 0; i < owerChirldNum; i++) {
                let s = g.getChildAt(i);
                if (s.name == "ground"||s.name =="HouseAnchorMax"||s.name =="HouseAnchorMin"||s.name =="pivot"||s.name.substr(0,3)== "pic") {
                    // console.log("转换前 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
                    let jizhunX = s.x - s.pivotX;
                    let jizhunY = s.y - s.pivotY;
                    //调整前
               
//将球体节点的 轴心点放到棋盘中心
                    s.pivot(byPivotX - jizhunX, byPivotY - jizhunY);
//防止碰撞
                    if (null !=s.getComponent((Laya.CircleCollider))){
                    let cc = s.getComponent(Laya.CircleCollider);
                    // console.log("转换前 " + cc.name + "    cc.x: " + cc.x + "   cc.y:" + cc.y );
                    cc.destroy();
             
                    a[i]=cc;
                    }
            }
            }
            for (var i = 0; i < owerChirldNum; i++) {
                let s = g.getChildAt(i);
                let jizhunX = s.x - s.pivotX;
                let jizhunY = s.y - s.pivotY;
                     if(null!=a[i])
                  / a[i].destroyed=false ;
                    if (s.name == "ground"||s.name =="HouseAnchorMax"||s.name =="HouseAnchorMin"||s.name =="pivot"||s.name.substr(0,3)== "pic") {
                    s.scaleY = s.scaleY + (ns);
                    s.scaleX = s.scaleX + (ns);
               
                    // console.log("转换后 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
                    if(null!=a[i]){
                    //  console.log("转换后 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
                //修改碰撞坐标等于
             
                console.log("转换后 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
             
                console.log("转换后 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
           
               
              //  console.log("转换后 " + s.name + "    s.x: " + s.x + "   s.y:" + s.y + "   s.pivotY:" + s.pivotY + "   s.pivotX:" + s.pivotX);
               
                s.addComponentIntance(a[i]);
               
                    }
                    }
                 
                }
           
        }
已邀请:

HIPPOPMANANDRAPGIRL

赞同来自:

放大前
放大后

HIPPOPMANANDRAPGIRL

赞同来自:

放大节点后, 碰撞体不会按照设定的轴心点放大,会按照轴心为0,0去放大 。建议直接放大舞台,

要回复问题请先

商务合作
商务合作