Иногда на моем экране сверху вниз мерцает ужасное мерцание. Это происходит только тогда, когда камера перемещается (что следует за моим персонажем игрока). Неважно, где я нахожусь на карте, чтобы это произошло. Если я перестану двигаться в нужный момент, линии останутся видимыми, пока я не начну двигаться снова. Я добавил скриншот, чтобы вы могли видеть, как он выглядит:
Если вы присмотритесь, вы можете заметить, что линии представляют часть моей плитки "горная стена" (эта плитка используется чуть ниже на карте):
Я попытался поместить cam.update () в начало метода update (), как предлагали некоторые другие пользователи StackOverflow, но, похоже, это не работает. Я также позаботился о том, чтобы между изображениями в изображении наборов плиток абсолютно не было пробелов. Большинство вопросов, которые я вижу по этому вопросу, имеют другой вид мерцания, чем я.
Вот код моего экрана и всего, что происходит:
public PlayScreen(MyGame game){
cam = new OrthographicCamera();
batch = new SpriteBatch();
gameMap = new TestMap(startMap);
player = new Player(this);
Gdx.input.setInputProcessor(this);
}
public void update(float delta){
player.update(delta);
Rectangle playerRect = player.getNextRectangle(delta);
Rectangle teleportRect = gameMap.teleportTo(playerRect);
if(!gameMap.isColliding(playerRect)){
player.setPosition(playerRect);
}
if(teleportRect != null){
player.setPosition(teleportRect);
}
cam.viewportHeight = Gdx.graphics.getHeight() / zoomLevel;
cam.viewportWidth = Gdx.graphics.getWidth() / zoomLevel;
cam.position.x = player.getX() + (player.getWidth() / 2);
cam.position.y = player.getY() + (player.getHeight() / 2);
cam.update();
}
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
gameMap.render(cam);
Gdx.graphics.setTitle("FPS: "+Gdx.graphics.getFramesPerSecond());
gameMap.getMapRenderer().getBatch().begin();
player.draw(gameMap.getMapRenderer().getBatch());
gameMap.getMapRenderer().getBatch().end();
}