libgdx在地图上设置敌人/怪物的位置而不是在相机视图中

时间:2018-05-09 10:25:07

标签: java libgdx

我正在努力在地图上设置怪物,但我得到的只是将它放在相机坐标上。我尝试使用Tiled,最后我设置了我想要的怪物,但我不知道如何移动这个怪物。

Link to game map, the dragon in right bottom corner is from Enemy class, and the goblin is from Bot class

这里来自Enemy class的相同代码

public Enemy() {
    img = new Texture(Gdx.files.internal(path));
    sprite = new Sprite(img);
    batch = new SpriteBatch();
    position = new Vector2();
}

public void update(float delta) {
    batch.begin();
    batch.draw(img, position.x, position.y);
    batch.end();
}

还有Bot课,我从Tiled那里得到了怪物

public Bot(TextureMapObjectRenderer tiledMapRenderer, String name) {
    this.tiledMapRenderer = tiledMapRenderer;
    try {
        monsterLayer = tiledMapRenderer.getMap().getLayers().get("monster");
        monsterObjects = monsterLayer.getObjects();
        monster = monsterObjects.get(name);
    } catch (Exception ex) {
    }
}

public void update(float delta) {
    tiledMapRenderer.renderObject(monster);

}

1 个答案:

答案 0 :(得分:0)

我使用TextureMapObject获取敌人/怪物的X和Y位置。我也创建了渲染MapObject的方法。

public void renderMonster(MapObject object) {
    if (object instanceof TextureMapObject) {
        TextureMapObject textureMonster = (TextureMapObject) object;
        textureMonsters.add(textureMonster);
        batch.begin();
        batch.draw(textureMonster.getTextureRegion(), textureMonster.getX(), textureMonster.getY());
        batch.end();
        // move the monster
        textureMonster.setX(randomMove(-1, 1).x + textureMonster.getX());
        textureMonster.setY(randomMove(-1, 1).y + textureMonster.getY());
    }
}

我知道这种方法并不完美,但它有效。