Wie kann man in libGDX eine Map an einer bestimmten Position rendern?

...komplette Frage anzeigen

1 Antwort

Dafür gibt es in LibGDX die Camera. Für 2D verwendet man die sogenannte "OrthographicCamera".

Du solltest ja bereits die ViewPorts verwenden, um auch unterschiedliche Auflösungen und Bildformate (16:9, 4:3 etc.) richtig zu behandeln. falls nicht, ließ dir das hier (https://github.com/libgdx/libgdx/wiki/Viewports) durch.

Wie du siehts verwenden diese ViewPorts bereits eine Camera. Diese Camera kannst du mithilfe der "translate(float x, float y)" Methode bewegen.

Beim rendern des ganzen musst du dann camera.update() aufrufen und anschließend die ProjectionMatrix deines Batches (vermutlich SpriteBatch) auf "camera.combined" setzen. Wenn du anschließend mit diesem BAtch alles renderst, wird die Position deiner OrthographicCamera beim rendern mit einbezogen.

Hier (https://github.com/libgdx/libgdx/wiki/Orthographic-camera) gibt es ein tutorial dazu.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von jaunel
19.09.2016, 15:36

Erstmal vielen Dank für deine Antwort! Hätte nicht erwartet dass ich eine bekomme.

Ich benutze bereits eine Camera, heißt das also dass ich jedes Mal wenn ich etwas an einer anderen Stelle rendern will alles komplett updaten muss?

(hier ein Ausschnitt davon) :

Deine Antwort hat mir ansonsten sehr weiter geholfen! :D

gamecam.translate(0.5f, 0);
gamecam.update();
game.batch.setProjectionMatrix(gamecam.combined);

gamePort = new FitViewport(TheGame.V_WIDTH / TheGame.PPM, TheGame.V_HEIGHT / TheGame.PPM, gamecam);
renderer = new OrthogonalTiledMapRenderer(map, 1 / TheGame.PPM);

map = mapLoader.load("levels/level2.tmx");
renderer.setMap(map);
0

Was möchtest Du wissen?