Libgdx 骨骼动画整理

来源:互联网 发布:保卫萝卜3 炮塔数据 编辑:程序博客网 时间:2024/05/21 10:10

Spine骨骼动画的使用本文不进行讲解,纯粹是记录一些遇到的问题。

///////////////////////////////////////////////////////////////////////////////////////////////////

1.网格类型

如果跑出mesh错误,那么可以知道是网格类型的Spine动画没处理好

当然,我们创建动画的时候应该知道是那种类型,通配置文件可可以知道。

mesh动画采用的都是PolygonSpriteBatch对象去绘制如下代码:

  @Override
    public void draw(Batch batch, float parentAlpha) {
        if (visible && skeleton != null) {
            if (ismesh) {
                batch.end();
                polygonSpriteBatch.setProjectionMatrix(batch.getProjectionMatrix());
                polygonSpriteBatch.setTransformMatrix(batch.getTransformMatrix());
                polygonSpriteBatch.begin();
                skeletonRenderer.draw(polygonSpriteBatch, skeleton);
                polygonSpriteBatch.end();
                batch.begin();
            } else {
                skeletonRenderer.draw(batch, skeleton);
            }
        }

    }

普通的骨骼绘制采用  skeletonRenderer.draw(batch, skeleton);绘制即可

对于mesh骨骼动画,采用polygonSpriteBatch进行绘制时,需要注意的是设置polygonSpriteBatch的矩阵

  polygonSpriteBatch.setProjectionMatrix(batch.getProjectionMatrix());
                polygonSpriteBatch.setTransformMatrix(batch.getTransformMatrix());

如果不进行上述设置,那么位置就与batch的不一致,在外部进行绘制Actor的时候,采用的是Batch,位置的设定是根据

Batch的矩阵进行处理,很显然,polygonSpriteBatch 与Batch不一致,将导致我们在调整骨骼动画的位置的时候,很难调整到想要的

Batc来自上层,也就是舞台stage ,stage上的Actor都是采用Batch的矩阵进行对齐摆放。基本上坐标不对都因于此。



//////////////////////////////////////////////////////////////////////////////////////////////////

0 0