在一个精灵中组合两个精灵(Libgdx)
问题描述:
我想将两个精灵合并为一个。 例如:在一个精灵中组合两个精灵(Libgdx)
private Sprite spriteGirl;
private Sprite spriteSweater;
private Sprite spriteDressed;
..................................................................
atlas = new TextureAtlas(Gdx.files.internal("data/images.pack"));
spriteGirl = atlas.createSprite("girl");
spriteSweater = atlas.createSprite("sweater");
...................................................................
“spriteSweater” 应被放置在精灵 “spriteGirl”(在某些坐标)。这个组合是精灵“spriteDressed”。
在此之后,生成的精灵“spriteDressed”可以是动画。
我宁愿单独移动“spriteDressed”而不是“spriteGirl”和“spriteSweater”。
任何帮助,高度赞赏。
答
我会创建一个复合类来保存和管理它组成的精灵。
public class CompositeSprite {
Array<Sprite> componentSprites;
public CompositeSprite() {
componentSprites = new Array<Sprite>();
}
public void addComponentSprite(Sprite sprite) {
componentSprites.add(sprite);
}
// ... other methods left out for brevity
public void draw(SpriteBatch spriteBatch) {
for (Sprite sprite : componentSprites) {
sprite.draw(batch)
}
}
}
谢谢。无论如何,我正在考虑在绘画之前结合这些精灵。 如果我们绘制“spriteGirl”和这个移动(随机)到一个点(x,y),这个位置应该连续计算,以便“spriteSweater”可以跟随“spriteGirl”的步骤,保持相对位置。 相反,如果我们在绘制之前组合精灵(spriteDressed),则不需要估计位置。 – user1691159
在这种情况下,创建一个像素图,绘制两个图像,然后创建一个纹理。请注意,这不会很有效,但会符合您的要求。我仍然建议尝试复合方法,因为这样可以提高效率和灵活性。 –
非常感谢您的帮助。我会尝试两种方法。 – user1691159