龙骨运行过程中动态画碰撞框偏移

我是动态获取龙骨动画的转换矩阵,以此绘制一个可以跟随动画的碰撞框,但是发现龙骨动画播放时,碰撞框会一点一点沿着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);  // 根据顶点坐标绘制碰撞框
            }
        }

这是我获取矩阵绘制碰撞框的代码,请问有人遇到类似的问题吗

1赞

版本是cocos creator r2.0.9

已解决, 要把龙骨动画的组件存放在子节点就可以了

请问 你再原生平台可以获取到globalTransformMatrix 这个值么

原生平台指的是?

我现在也有这个需求,可以给点指导不?

slot.boundingBoxData 返回的是null

要把龙骨动画的组件存放在子节点就可以了

刚体类型用 Animated