我的图层可以容纳许多精灵。精灵在图层中执行自己的移动。我想将变换应用于该组。自然,其子级需要执行相同的调整。
我想我正在寻找一个矩阵,而libgdx似乎确实有它们。但是我不明白如何将其应用于libgdx精灵。但是,如果那不是我所需要的,那我需要什么?
最佳答案
因此,据我所知,这里没有简单的解决方案(尽管我现在无法访问libgdx,因此我没有进行任何测试)。
如果您只需要跟踪翻译,就可以为图层指定一个位置(vector2或其他方式),在计算精灵的位置时,将其偏移图层的位置可能是最简单的。
如果您需要访问所有变换(旋转,缩放等),最好使用matrix3。 matrix3s允许您附加任意数量的变换(通过平移,缩放,旋转等),然后将位置乘以矩阵,以便应用这些变换。
因此,例如,如果您使用的是名为“对象”的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);
请注意,向量乘法功能会更改原始向量,因此,如果您使用Vector2来存储位置,则可能需要在应用转换之前创建其副本。