2017-03-02 2 views
0

Ich mache ein 2D Side Scroller Spiel mit Scala & libGDX. Mein Problem ist, dass ich eine feste Raumgröße haben möchte, sagen wir 4000px * 720px.libGDX Wie wird die Größe des Spielraums eingestellt?

Ich möchte die Fenstergröße 1280px * 720px und ich brauche eine orthographische Kamera, die ich bewegen kann und den richtigen Teil des "Raum"/"Karte" anzeigen. Das Problem ist, wie kann ich die Raumgröße auf diese bestimmte Größe einstellen und dann orthographische Kamera verwenden, um einen Teil davon anzuzeigen? Ich versuche, dieses Tutorial

Derzeit verwenden: https://github.com/libgdx/libgdx/wiki/Orthographic-camera

ich die Fenstergröße einstellen kann, wenn ich das Programm wie folgt starten:

object DesktopLauncher { 
    def main(args: Array[String]) { 
     var config: LwjglApplicationConfiguration = new LwjglApplicationConfiguration 
     config.foregroundFPS = 60 
     config.width = 1280 
     config.height = 720 
    new LwjglApplication(new Controller, config) 
    } 
} 

Und ich kann die Kamera Größe wie folgt festgelegt:

val h: Float = Gdx.graphics.getHeight() 
val w: Float = Gdx.graphics.getWidth() 

cam = new OrthographicCamera(100, 100 * (h/w)) 
cam.position.set(cam.viewportWidth/2f, cam.viewportHeight/2f, 0) 

Aber wie kann ich die Kamera und die Raumgröße auf die gewünschte Größe in Pixeln festlegen?

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, möchten Sie, dass Ihre Kamera keine schwarzen Balken mehr anzeigt, wenn Sie an den Rand des Raums kommen (Stoppt das Scrollen am Rand des Raumes). Ich nehme an, Sie verwenden eine Viewport. (Sie sollten sein) So würde ich es tun:

Sie müssten Viewport#unproject() verwenden, um Bildschirmkoordinaten zu Weltkoordinaten zu projizieren. Sie würden Ihre Fensterbreite auf Weltkoordinaten projizieren, nennen wir diese Variable camWorldX. Bevor Sie die Kamera bewegen, prüfen Sie, ob camWorldX + 1 < roomWidth. Wenn es true ist, verschieben Sie die Kamera, sonst nicht. Für negative Richtungen, unproject 0 und prüfen, ob camWorldX - 1 < 0. Sie können dieselbe Logik auf die Achse Y anwenden.

Um mehr über LibGDX Koordinatensysteme zu lesen, click here. Um mehr zu lesen über Viewport#unproject(), click here.

Verwandte Themen