简体   繁体   中英

LibGDX: rendering tiled-maps from tile to tile

I have a problem with tiled-maps.

I must to render every tile in one of the layers tile-by-tile (from tile to tile).

How can I realize it?

I tried it, but it renders nothing.

private void drawObject(boolean down)
{
    final String objects = "objects";
    for (MapObject obj : world.getMap().getLayers().get(objects).getObjects())
    {
        if (!down)
        {
            if ((Integer) obj.getProperties().get("y") > world.getPlayer().getBody().getPosition().y)
            {
                world.getTiledMapRenderer().renderObject(obj); 
            }
        }
    }
}

It seems like you are trying to render an object layer. In order to render objects from the object layer, you need some other input for example:

for (MapObject mo : map.getLayers().get("Enemies").getObjects()) {      
        Enemy e = new Enemy(new Sprite(new Texture("maps/snailWalk1.png")), (TiledMapTileLayer)map.getLayers().get(0));
        e.setPosition(((RectangleMapObject)mo).getRectangle().getX(), ((RectangleMapObject)mo).getRectangle().getY());
        enemies.add(e);
    }

And in your renderer method do like this:

renderer.render();

renderer.getSpriteBatch().begin();
    for (Enemy e : enemies) {
        e.draw(renderer.getSpriteBatch());
    }

As for the renderer you use a OrthonogalTiledMapRenderer or an IsometricTiledMapRenderer object. You should declare this as a class object

OrthogonalTiledMapRenderer renderer = new OrthogonalTiledMapRenderer(map);

If you want to do is render a layer tile-by-tile, I would say that you should take another approach, and try to make this layer as an object layer, and then create objects programitcally out of these.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM