libgdx 在地图上设置 enemy/monster 的位置,而不是在相机视图中

libgdx set position of enemy/monster on the map not in camera view

我正在努力在地图上设置怪物,但我得到的只是将它放在相机坐标上。我试过用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();
}

还有机器人 class,我从 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);

}

我使用 TextureMapObject 获取 enemy/monster 的 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());
    }
}

我知道这个方法不完美,但是很管用。