Libgdx ProjectionMatrix для сцены? - PullRequest
       87

Libgdx ProjectionMatrix для сцены?

0 голосов
/ 18 октября 2018

Эй, у меня проблема с ProjectionMatrix.Я нарисовал прямоугольник с той же x-координатой, что и моя метка, но они не в той же позиции.Есть ли что-то вроде ProjectionMatrix для сцены?

@Override
public void create() {
    batch = new SpriteBatch();
    stage = new Stage();
    shapeRenderer = new ShapeRenderer();
    camera = new OrthographicCamera();
    camera.setToOrtho(false, 480, 800);

    //create label
    generator = new FreeTypeFontGenerator(Gdx.files.internal("arial-black.ttf"));
    parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
    parameter.size = 50;
    parameter.color = Color.BLACK;
    font = generator.generateFont(parameter);
    labelStyle = new Label.LabelStyle();
    labelStyle.font = font;
    label = new Label("text", labelStyle);
    label.setPosition(240, 400);
    stage.addActor(label);
}

@Override
public void render() {
    delta = Gdx.graphics.getDeltaTime();
    Gdx.gl.glClearColor(255, 255, 255, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    // tell the camera to update its matrices.
    camera.update();

    // tell the SpriteBatch to render in the
    // coordinate system specified by the camera.
    batch.setProjectionMatrix(camera.combined);
    shapeRenderer.setProjectionMatrix(batch.getProjectionMatrix());

    stage.act(delta);
    stage.draw();

    shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
    shapeRenderer.setColor(Color.BLACK);
    shapeRenderer.rect(label.getX(), 0, 50, 50);
    shapeRenderer.end();
  }

1 Ответ

0 голосов
/ 18 октября 2018

Использовать конструктор сцены с окном просмотра:

/** Creates a stage with the specified viewport. The stage will use its own {@link Batch} which will be disposed when the stage
 * is disposed. */
public Stage (Viewport viewport) {
    this(viewport, new SpriteBatch());
    ownsBatch = true;
}

Do

Viewport viewport = new FitViewport(800, 480, camera);
Stage stage = new Stage(viewport);
...