java - Dibuja un BitmapFont girado en libgdx
matrix rotation (3)
Parece que no puedo entender cómo rotar una fuente de mapa de bits correctamente. Creo que modificas la matriz de transformación del SpriteBatch. Sin embargo, al tratar de rotar, el texto gira alrededor de cierto punto y no sé cómo rotarlo en relación con el texto en sí.
Solo agregaría ... supongo que tiene una imagen base de fuente dentro de un atlas ... por lo que necesita agregar originales de TextureRegion sot gliph src ya que es solo relativo a esa región de Textura dada, por lo tanto
BitmapFont font = ...
BitmapFont.Glyph glyph = font.getData().getGlyph(ch);
int srcX = glyph.srcX + font.getRegion().getRegionX();
int srcY = glyph.srcY+ font.getRegion().getRegionY();
Sprite s = new Sprite(font.getRegion().getTexture(), srcX,srcY,glyph.width, glyph.height);
puedes probar el siguiente código:
Matrix4 mx4Font = new Matrix4();
BitmapFont font;
SpriteBatch spriteFont;
font = new BitmapFont(Gdx.files.internal("data/font/agencyFB.fnt"), Gdx.files.internal("data/font/agencyFB.png"), true); //must be set true to be flipped
mx4Font.setToRotation(new Vector3(200, 200, 0), 180);
spriteFont.setTransformMatrix(mx4Font);
spriteFont.begin();
font.setColor(1.0f, 1.0f, 1.0f, 1.0f);
font.draw(spriteFont, "The quick brown fox jumped over the lazy dog", 100, 110);
spriteFont.end();
Puedes crear un glifo en un sprite. De esta forma, puedes manipular tu texto como un sprite.
Código de ejemplo:
Tenga en cuenta que esto devolverá un Sprite de un solo glifo. (Por ejemplo, char ''A'' se transforma en un sprite).
/** Creates a sprite from a glyph.
*
* @param ch
* @return Sprite
*/
public Sprite getGlyphSprite (char ch) {
Glyph glyph = Globals.g.font.getData().getGlyph(ch);
Sprite s = new Sprite(Globals.g.font.getRegion().getTexture(),
glyph.srcX,glyph.srcY,glyph.width, glyph.height);
s.flip(false, true);
s.setOrigin(glyph.width/2, glyph.height/2);
return s;
}