[英]Text rotation libgdx
我想旋转libgdx中的BitmapFont。 关于这个问题有一些话题。 绘制在libgdx中旋转的BitmapFont但是,我尝试的第一个解决方案是剪切文本,整个文本不会出现(对角剪切)。 而且它还会将它旋转90度(当它说应该为180度时)。我只是不明白。
码:
public void show() {
sr = new ShapeRenderer();
w = Gdx.graphics.getWidth();
h = Gdx.graphics.getHeight();
textRotation = new Matrix4();
textRotation.setToRotation( new Vector3(200,200, 0), 180);
rectThickness = h / 120;
c1 = Color.WHITE;
c2 = Color.WHITE;
f = new BitmapFont(Gdx.files.internal("fonts/MyFont.fnt"),
Gdx.files.internal("data/MyFont.png"), true);
f.setScale(h/500);
sb = new SpriteBatch();
}
private void renderPlayerScores() { //callend in render
sb.setTransformMatrix(textRotation);
f.setColor(players[0].getColor());
sb.begin();
f.draw(sb, "Player 1: "+ Integer.toString(scores[0]), 100, 110);
sb.end();
}
一种方法是使用scene2d标签。 它们非常易于使用,如果您在Scene2D UI和Labels上进行了阅读,您应该能够做您想做的事情 。 但是,有些人不喜欢使用Scene2D。 下面的代码完成了您想要的,但是为了避免使用Scene2D,这需要一些额外的工作。
public SpriteBatch spriteBatch;
private int posX = 100;
private int posY = 100;
private float angle = 45;
private String text = "Hello, World!";
private BitmapFont font;
private Matrix4 oldTransformMatrix;
Matrix4 mx4Font = new Matrix4();
@Override
public void show() {
font = new BitmapFont(Gdx.files.internal("someFont.ttf"));
oldTransformMatrix = spriteBatch.getTransformMatrix().cpy();
mx4Font.rotate(new Vector3(0, 0, 1), angle);
mx4Font.trn(posX, posY, 0);
}
@Override
public void render() {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
spriteBatch.setTransformMatrix(mx4Font);
spriteBatch.begin();
font.draw(spriteBatch, text, 0, 0);
spriteBatch.end();
spriteBatch.setTransformMatrix(oldTransformMatrix);
}
我希望其中一些对您有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.