[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]);
}
}
}
}
放大后
其中所有球体节点轴心点位于棋盘中心
且棋盘于球体并联关系,无父子关系
遍历球体和棋盘进行的直接放大 ,执行一次放大后,初步排查碰撞体按照球体节点的轴心点(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]);
}
}
}
}
没有找到相关结果
已邀请:
要回复问题请先登录
2 个回复
HIPPOPMANANDRAPGIRL
赞同来自:
放大后
HIPPOPMANANDRAPGIRL
赞同来自: