创建怪物并设置tileMap#java#libGDX的位置

创建怪物并设置tileMap#java#libGDX的位置,java,libgdx,Java,Libgdx,我在地图上设置我的怪物有问题。首先,我用摄像机坐标创建了一个骑士。现在我想在地图上设置一个怪物,不受摄像机坐标的影响,这样当我使用键移动玩家时,怪物就停留在一个位置。我试图实现这一点,我得到的只是怪物一直呆在屏幕的左下角。这是我的个人课 public abstract class Person implements Stats { public Person(String pathToFile,Vector2 position) { ... } public void update(

我在地图上设置我的怪物有问题。首先,我用摄像机坐标创建了一个骑士。现在我想在地图上设置一个怪物,不受摄像机坐标的影响,这样当我使用键移动玩家时,怪物就停留在一个位置。我试图实现这一点,我得到的只是怪物一直呆在屏幕的左下角。这是我的个人课

public abstract class Person implements Stats {

public Person(String pathToFile,Vector2 position) {
    ...
}

public void update(float delta) {
    spriteBatch.begin();
    sprite.draw(spriteBatch);
    spriteBatch.end();
}
还有我的机器人课

public class Bot extends Person {

public Bot() {
    super(toFilePath,new Vector2(500,550));
    super.position.set(500,550);
}

@Override
public void update(float delta) {
    super.update(delta);
}

@Override
public void dispose() {
    super.dispose();
}
}

骑士阶层

 public class Knight extends Person {

public Knight(OrthographicCamera camera) {

    super(toFilePath, new Vector2(MapScreen.startPositionX, MapScreen.startPositionY));
    super.sprite.setCenter(camera.viewportWidth / 2, camera.viewportHeight / 2);
    this.camera = camera;
    // animation
    ...
}

public void update(float delta, MapScreen mapScreen) {
    camera.update();
    walkBatch.begin();
    // input handling
    walkBatch.end();
}

@Override
public void dispose() {
    ...
}
还有我开设所有课程的班级

public class MapScreen implements Screen {

...

@Override
public void show() {
    init(startPositionX, startPositionY);
}

// initialize variable
private void init(float posX, float posY) {
    camera = new OrthographicCamera();
    camera.setToOrtho(false, width, height);
    tiledMap = new TmxMapLoader(new ExternalFileHandleResolver()).load(mapName);
    setTiledMapRenderer(new OrthogonalTiledMapRenderer(tiledMap));
    knight = new Knight(camera);
    camera.zoom = ZOOM;
    camera.position.set(posX, posY, 0);
    camera.update();
}

@Override
public void render(float delta) {
    camera.update();
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    getTiledMapRenderer().setView(camera);
    getTiledMapRenderer().render(layerBottom);
    knight.update(delta, this);

    getTiledMapRenderer().render(layerTop);
}
当使用a时(当查看代码时,您可能根本不使用a),您可以使用相机的矩阵来正确计算偏移

像这样使用它:

spriteBatch.setProjectionMatrix(camera.combined);
spriteBatch.begin();
// draw your sprites here
spriteBatch.end();

你还应该考虑不通过屏幕渲染精灵来提高性能:


我找到了一个解决办法。我在平铺中创建了一个对象层,并在那里设置了我的怪物。然后在MapScreen中渲染它。谢谢你的帮助

您在问题中发布了许多代码,这使我们(以及未来的读者)不清楚问题的确切位置。请将问题代码减少到10行或更少。见:和。