我是动态获取龙骨动画的转换矩阵,以此绘制一个可以跟随动画的碰撞框,但是发现龙骨动画播放时,碰撞框会一点一点沿着X轴偏移,不同的动画偏移量不同,且不播放动画,龙骨静止时碰撞框就不发生偏移。
let slot = this.armature.getSlot(boneName); // 获取某一个Slot对象
slot.updateTransformAndMatrix(); // 更新他的转化矩阵信息
let boxData = slot.boundingBoxData.vertices; //取到该处碰撞框的各个定点坐标
let collider:cc.PolygonCollider; // 为节点加上一个多边形碰撞框
collider = colliderNode.getComponent(cc.PolygonCollider);
if(!collider){
collider = colliderNode.addComponent(cc.PolygonCollider);
}
collider.points = [];
for(let i = 0; i<boxData.length ; i++){
let vec:cc.Vec2;
if( i % 2 === 0){
let result = {x:0,y:0};
slot.globalTransformMatrix.transformPoint(boxData[i],boxData[i+1],result,false); // 使用矩阵转化各个顶点坐标(一开始是正常的,随后慢慢偏移,怀疑是转化矩阵计算错误?)
vec = cc.v2(result.x-this.accNum,-result.y);
collider.points.push(vec); // 根据顶点坐标绘制碰撞框
}
}
这是我获取矩阵绘制碰撞框的代码,请问有人遇到类似的问题吗