Java 文本旋转libgdx

Java 文本旋转libgdx,java,rotation,libgdx,bitmap-fonts,Java,Rotation,Libgdx,Bitmap Fonts,我想在libgdx中旋转位图字体。关于这件事有很多话题。但是,我尝试的第一个解决方案是剪切文本,整个文本不会显示(对角剪切)。当它说它应该是180度时,它也会把它旋转90度。我就是不明白 代码: 一种方法是使用scene2d标签。他们很容易相处,如果你仔细阅读,你应该能够做你想做的事情。然而,有些人不喜欢使用Scene2D。下面的代码实现了您想要的功能,但是为了避免使用Scene2D,需要做一些额外的工作 public SpriteBatch spriteBatch; private int p

我想在libgdx中旋转位图字体。关于这件事有很多话题。但是,我尝试的第一个解决方案是剪切文本,整个文本不会显示(对角剪切)。当它说它应该是180度时,它也会把它旋转90度。我就是不明白

代码:


一种方法是使用scene2d标签。他们很容易相处,如果你仔细阅读,你应该能够做你想做的事情。然而,有些人不喜欢使用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);
}

我希望其中一些能对你有用。

你可以使用tween,但为此你必须自己制作文本精灵访问器。你能给我举个例子吗?你找到解决方案了吗?
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);
}