Java libgdx中的二维矩阵

Java libgdx中的二维矩阵,java,matrix,libgdx,Java,Matrix,Libgdx,我有一个可以容纳许多精灵的图层。精灵在层中执行自己的移动。我想将转换应用于组。当然,它的孩子也需要进行同样的调整 我想我正在寻找一个矩阵,而libgdx似乎有它们。但是我不明白如何将它应用到我的libgdx精灵中。但是,如果这不是我需要的,那么我需要什么呢?因此,从我所知道的来看,这里没有简单的解决方案(尽管我现在无法访问libgdx,所以我还没有测试任何东西) 如果您需要做的只是跟踪平移,那么为图层指定位置(vector2或其他)可能是最简单的方法,并且在计算精灵的位置时,可以根据图层的位置对

我有一个可以容纳许多精灵的图层。精灵在层中执行自己的移动。我想将转换应用于组。当然,它的孩子也需要进行同样的调整


我想我正在寻找一个矩阵,而libgdx似乎有它们。但是我不明白如何将它应用到我的libgdx精灵中。但是,如果这不是我需要的,那么我需要什么呢?

因此,从我所知道的来看,这里没有简单的解决方案(尽管我现在无法访问libgdx,所以我还没有测试任何东西)

如果您需要做的只是跟踪平移,那么为图层指定位置(vector2或其他)可能是最简单的方法,并且在计算精灵的位置时,可以根据图层的位置对其进行偏移

如果您需要访问所有变换(旋转、缩放等),那么最好使用。Matrix3允许您附加任意数量的变换(通过平移、缩放、旋转等),然后将您的位置乘以矩阵,以便应用这些变换

例如,如果您使用一个名为“object”的Sprite对象,那么您的代码可能类似于

    Matrix3 mat3 = new Matrix3();
    //do your transformations
    Vector2 vec2 = new Vector2(object.getX(), object.getY());
    vec2.mul(mat3);
    object.setPosition(vec2.x, vec2.y);

请注意,vector multiply函数会更改原始向量,因此,如果使用Vector2存储位置,则在应用变换之前,可能需要创建该向量的副本,因此,它们不会对每个矩阵使用单独的矩阵来修改它们的变换。如果要构建父级和子级的层次结构,以便按照描述变换树的分支,请阅读使用scene2d:LibGDX确实使用矩阵变换网格。有Matrix3和Matrix4类。但是它们对精灵类没用。是的,你说得对。我已经探索了场景2D,它做了很多我想要的事情。然而,将所有东西都转换过来会有相当大的开销。这是我将来想做的事情,但现在我需要一个快速解决方案。