Опитвам се да следвам играч с камера в света на 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 координати, толкова по-голямо е отместването.
какво правя грешно