Я пытаюсь следить за игроком с камерой в мире Box2D. Но есть смещение. И я думаю, что это как-то связано с преобразованием пикселей на метр. Прежде чем вы проверите мой код, вы должны знать, что Values.WTB = World_To_Box and has a values of 0.032f
и Values.BTW = Box_To_World and has a values of 32f
.
Вот часть рендера:
@Override
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(0.105f,0.105f,0.105f,1f);
camera.position.set(player.getPosition().x*Values.BTW, player.getPosition().y*Values.BTW, 0);
camera.update();
Matrix4 cameraCopy = camera.combined.cpy();
cameraCopy.scl(Values.BTW);
batch.setProjectionMatrix(cameraCopy);
shapeRenderer.setProjectionMatrix(cameraCopy);
batch.begin();
player.draw(batch);
batch.end();
debugRenderer.render(world, cameraCopy);
world.step(1/60f, 6, 2);
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(Color.GREEN);
shapeRenderer.circle(player.getPosition().x, player.getPosition().y, 5*Values.WTB,10);
shapeRenderer.setColor(Color.ORANGE);
shapeRenderer.circle(camera.position.x*Values.WTB, camera.position.y*Values.WTB, 5*Values.WTB,10);
shapeRenderer.end();
}
и вот изображение для демонстрации:
Зеленая точка – это центр игрока, а оранжевая точка – центр камеры. И чем дальше вы идете от координат 0,0 тем больше смещение.
Что я делаю не так?