Hey,
ich habe mal wieder ein kleines/großes Problem. Ich programmiere immernoch an meinem 2D Spiel in Java + LibGDX. Nun arbeite ich gerade ein wenig an der überarbeitung meiner Kamera. Momentan ist es so wenn man den Screen auf eine neue Größe verstellt also z.b. auf 2560*1080 dann update ich die normale Orthographic Camera von LIBGDX mit der neuen Auflösung des Displays und er vergrößert einfach den Screen. Also man sieht von Spielwelt in der breite genau gleich viel in jeder Auflösung. Nun werden aber ein Teil meienr Guis einfach abgeschnitten. Also sie verschwinden weil die höhe halt nicht imemr gleich ist.
Das ist meine Camera resize Methode sie veröndert nach jedem verstellen der Auflösung den Viewport der Camera auf 1280. Also wie gesagt man sieht immer gleich viel von der Welt in der Breite in der Höhe halt net.
Man kann sich das ganze so vorstellen:
Bei einer Auflösung von 1280 * 720:
Man plaziert vier Pixel an den Ecken des Displays. Wenn man nun das Fenster auf 2560*1080 vergrößert. Dann sieht man die Pixel unten links und rechts noch aber vergrößert und die oberen Pixel sind aus dem Bild verschwunden.
Nun für die Spielwelt ist das ganze okay. Da es für niemanden unfair wird. Aber nun habe ich die Guis. Diese werden genau wie die Spielwelt behandelt. Also wenn das Inventar am oberen Rand des Displays ist bei einer Auflösung von 1280 * 720 wird das Inventar auch nach oben verschoben und ist nicht mehr sichtbar. Nun habe ich schon versucht das Inventar nach dem vergrößern einfach wieder an seine ursprüngliche Position zu verschieben. Hat nicht funktoniert.
Nun ist meine Frage, was muss ich rechnen oder welchen Viewport muss ich nehmen für die Guis das diese bei einer Vergößerung des Displays zwar vergößert werden aber noch ander gleichen Position bleiben. Also das Inventar z.b. ist oben am Display Rand in der mitte des Displays. Nach dem vergrößern des Displays soll das Inventar wieder an der Position sein aber halt vergößert werden.
Lg GentleXD
ich habe mal wieder ein kleines/großes Problem. Ich programmiere immernoch an meinem 2D Spiel in Java + LibGDX. Nun arbeite ich gerade ein wenig an der überarbeitung meiner Kamera. Momentan ist es so wenn man den Screen auf eine neue Größe verstellt also z.b. auf 2560*1080 dann update ich die normale Orthographic Camera von LIBGDX mit der neuen Auflösung des Displays und er vergrößert einfach den Screen. Also man sieht von Spielwelt in der breite genau gleich viel in jeder Auflösung. Nun werden aber ein Teil meienr Guis einfach abgeschnitten. Also sie verschwinden weil die höhe halt nicht imemr gleich ist.
Code:
public void resize(int width, int height) {
cam.viewportWidth = 1280;
cam.viewportHeight = ((float)height/(float)width)*1280;
cam.update();
}
Das ist meine Camera resize Methode sie veröndert nach jedem verstellen der Auflösung den Viewport der Camera auf 1280. Also wie gesagt man sieht immer gleich viel von der Welt in der Breite in der Höhe halt net.
Man kann sich das ganze so vorstellen:
Bei einer Auflösung von 1280 * 720:
Man plaziert vier Pixel an den Ecken des Displays. Wenn man nun das Fenster auf 2560*1080 vergrößert. Dann sieht man die Pixel unten links und rechts noch aber vergrößert und die oberen Pixel sind aus dem Bild verschwunden.
Nun für die Spielwelt ist das ganze okay. Da es für niemanden unfair wird. Aber nun habe ich die Guis. Diese werden genau wie die Spielwelt behandelt. Also wenn das Inventar am oberen Rand des Displays ist bei einer Auflösung von 1280 * 720 wird das Inventar auch nach oben verschoben und ist nicht mehr sichtbar. Nun habe ich schon versucht das Inventar nach dem vergrößern einfach wieder an seine ursprüngliche Position zu verschieben. Hat nicht funktoniert.
Nun ist meine Frage, was muss ich rechnen oder welchen Viewport muss ich nehmen für die Guis das diese bei einer Vergößerung des Displays zwar vergößert werden aber noch ander gleichen Position bleiben. Also das Inventar z.b. ist oben am Display Rand in der mitte des Displays. Nach dem vergrößern des Displays soll das Inventar wieder an der Position sein aber halt vergößert werden.
Lg GentleXD