Как объединить scen2d и OrthogonalTiledMapRenderer с помощью libgdx

То, что я делаю, показывает мозаичную карту на весь экран, и она отлично работает.

Персонаж отлично двигается и камера тоже.

Что я хочу это:

Отображение некоторого текста или кнопки image над картой, как кнопка меню в левой части экрана.

Я попытался использовать сцену из библиотеки scene2d, и я смог нарисовать то, что я хочу, на экране, проблема в том, что мой плеер Sprite скрыт.

Мой код выглядит следующим образом:

public class MapScreen implements Screen {

    private TiledMap initialMap;
    private static OrthogonalTiledMapRenderer orthogonalTiledMapRenderer;
    private OrthographicCamera camera;
    //player with x and y coordinates
    private Player player;


        public MapScreen() {
        //my player
        player = new player();
        //the map
        initialMap = getinitialMap();
        //i ask the orthogonalTiledMapRenderer to render my map
        orthogonalTiledMapRenderer = new OrthogonalTiledMapRenderer(currentmap);
        //I create the camera and i make the player in the middle of the screen
        camera = new OrthographicCamera();
        camera.position.set(w / 2, h / 2, 0);
        camera.translate(player.getPosition().x * 32, player.getPosition().y * 32);
        camera.translate(-16 * 32, -8 * 32);
        camera.update();
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        camera.update();
        orthogonalTiledMapRenderer.getSpriteBatch().begin();
        orthogonalTiledMapRenderer.setView(camera);
        MapLayers mapLayers = initialMap.getLayers();
        //I render all the layer with the orthogonalTiledMapRenderer 
        for (int i = 0; i < mapLayers.getCount(); i++) {
            orthogonalTiledMapRenderer
                    .renderTileLayer((TiledMapTileLayer) mapLayers.get(i));
        }
        //handling event
        handleEvent();
        //i update the player position
        player.move();
        //renderig the player sprite
        player.render(orthogonalTiledMapRenderer.getSpriteBatch());
       orthogonalTiledMapRenderer.getSpriteBatch().end();

    }



}

** мой игрок Sprite становится невидимым **

1 ответ

Попробуй двигаться

stage.draw();

прежде чем начать спрайт пакет.

Или, возможно, после, но тогда у вашего игрока будет меньше z-index, чем у элементов сцены.

Другие вопросы по тегам