Libgdx TiledMap

时间:2014-09-18 03:42:22

标签: position libgdx

希望你度过愉快的一天。但我不,因为我有一个问题,我不知道如何解决它。它让我感到疲倦和无聊,所以任何帮助都会受到赞赏。 我在tilesmap Libgdx 0.9.8版本中检测到了碰撞。加载地图后:

    tiledMap = TiledLoader.createMap(Gdx.files.internal("map/lv1.tmx"));
    tileAtlas = new TileAtlas(tiledMap, Gdx.files.internal("map"));
    renderer = new TileMapRenderer(tiledMap, tileAtlas, 32, 32);
    camera =  new OrthographicCamera();

我尝试在地图中添加一个角色并让他移动:

    player = new Player(new Sprite(new Texture("data/man_test.png")));
    player.setSize(25, 35);
    player.setPosition(width/2, player.getHeight());        
    Gdx.input.setInputProcessor(player);

在Player类中,我使用参数speed = 120,当我按下键时,角色将向上,向下,向左或向右移动。当向右或向上移动时,速度> 0并且当向下或向左移动时,速度<0。我为角色设定了位置:

    setX(getX() + velocity.x * deltaTime);
    setY(getY() + velocity.y * deltaTime);

我尝试获取地图中由下面的代码加载的字符的行和列:

    row = tiledMap.height -1 -(int) ((player.getY()) / tiledMap.tileHeight);
    col = (int) (player.getX() / tiledMap.tileWidth);
    // return the value of tile which has TileProperty equals to "noPass"
    collision = tiledMap.getTileProperty(noPassLayer.tiles[row][col], "noPass");
    if("1".equals(collision)){
        Gdx.app.log("Collision", "dectected");
    }
    Gdx.app.log("Row", ""+row);

我想检查哪个角色正站在哪个瓷砖上。但是发生了一些错误。例如,我通过Tiled Editor打开地图,看到我想要与角色碰撞的瓷砖是[181] [13]。但是当角色移动到那个区块时,该行不是181而是191 !!! Btw,该列是准确的。我不知道发生了什么。 我是新手,所以我真的需要你的帮助。 非常感谢你!

0 个答案:

没有答案