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());
}
}
我知道这个方法不完美,但是很管用。
我正在努力在地图上设置怪物,但我得到的只是将它放在相机坐标上。我试过用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());
}
}
我知道这个方法不完美,但是很管用。