3.1的骨骼动画直接设置Shader似乎没有效果,我按照论坛里某人提供的方法,给它的所有子节点设置shader,但是这样设置以后,骨骼动画的位置和大小都不正确了,我研究了一下,发现似乎是每个元件的缩放和位置的变换都被执行了两遍,我给armature设置了scale 0.5,加上shader以后,每个元件都变成了原来大小的1/4,位置也是因此发生了偏差,求解决。
你解决没有?
grayArmature:function(armature){
var locBoneDic = armature.getBoneDic();
for (var key in locBoneDic) {
var bone = locBoneDic;
var detector = bone.getColliderDetector();
if (bone && bone.getDisplayRenderNode) {
var node = bone.getDisplayRenderNode();
this.graySprite(node);
}
if(!detector)
continue;
var bodyList = detector.getColliderBodyList();
for (var i = 0; i < bodyList.length; i++) {
var body = bodyList*;
}
}
},graySprite:function(sprite)
{
if( ‘opengl’ in cc.sys.capabilities ) {
if(sprite)
{
var shader = new cc.GLProgram();//cc.GLProgram.create(“gray.vsh”, “gray.fsh”);
shader.retain();
shader.init(this.vsh,this.fsh);
shader.addAttribute(cc.ATTRIBUTE_NAME_POSITION, cc.VERTEX_ATTRIB_POSITION);
shader.addAttribute(cc.ATTRIBUTE_NAME_COLOR, cc.VERTEX_ATTRIB_COLOR);
shader.addAttribute(cc.ATTRIBUTE_NAME_TEX_COORD, cc.VERTEX_ATTRIB_TEX_COORDS);
shader.link();
shader.updateUniforms();
sprite.setShaderProgram(shader);
}
}
}
骨骼必须每一个取出来绘制*