2017-01-03 2 views
0

In meinem Spiel habe ich meine Objekte als Darsteller dargestellt, also wären alle Spielobjekte auf einer Bühne. Aus irgendeinem Grund, wenn ich versuche, die Kamera der Stage zu bewegen, wird es nicht funktionieren, oder tatsächlich scheint es nicht zu funktionieren. Ich habe ein Spiel Schauspieler an der Stelle von 0,0 hinzugefügt. Wenn ich die Position der Kamera umsetze, bleibt der Actor immer noch in der unteren linken Ecke, obwohl, wenn ich die Position der Kamera logge, es zeigt, dass die Kamera sich bewegt hat.Stage-Kamera wird sich nicht bewegen

Die Ergebnisse der 2 Protokolle zeigen, dass die Positionen der Kamera verschoben wurden, aber es sieht nicht so aus.

public class StrikerScreen implements Screen { 

    public static float WIDTH = 1920; 
    public static float HEIGHT = 1080; 
    public static float PPM = 200; 

    private Launcher launcherRef; 

    private OrthographicCamera camera; 
    private FitViewport viewport; 

    private World world; 
    private Box2DDebugRenderer debugRenderer; 

    private Striker striker; 

    private Stage gameStage; 

    //constructor 
    public StrikerScreen(Launcher launcher) { 
     launcherRef = launcher; 

     world = new World(new Vector2(0, -9.8f), true); 
     debugRenderer = new Box2DDebugRenderer(); 

     gameStage = new Stage(); 
     camera = (OrthographicCamera) gameStage.getCamera(); 
     viewport = new FitViewport(WIDTH/PPM, HEIGHT/PPM, gameStage.getCamera()); 
     viewport.apply(); 

     gameStage.setViewport(viewport); 
     striker = new Striker(160f/PPM, 0, 0, world); 
     gameStage.addActor(striker); 

     gameStage.getCamera().translate(viewport.getWorldWidth()/2f, 500f, 0); 
     viewport.apply(); 
     camera.update(); 

     Gdx.app.log("StrikerScreen.java", "Camera position: " + gameStage.getCamera().position.toString()); 
     Gdx.app.log("StrikerScreen.java", "Camera size: " + gameStage.getCamera().viewportWidth + ", " + gameStage.getCamera().viewportHeight); 

    } 

    @Override 
    public void show() { 

    } 

    public void update(float delta) { 
     world.step(1/30f, 6, 2); 
     gameStage.act(delta); 
    } 

    @Override 
    public void render(float delta) { 
     update(delta); 
     debugRenderer.render(world, camera.combined); 
     gameStage.draw(); 

    } 

    @Override 
    public void resize(int width, int height) { 
     viewport.update(width, height, true); 
    } 

    @Override 
    public void pause() { 

    } 

    @Override 
    public void resume() { 

    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void dispose() { 

    } 
} 

Antwort

0

Im Code Sie auf dem Laufenden, die nur mal die Kamera bewegen sind im StrikerScreen Konstruktor, wo Sie es explizit übersetzen, und in der resize Verfahren, in dem Sie viewport.update(width, height, true); Passing true zu viewport.update genannt haben erzählt, ihn zu bewegen die Kamera zu wo (0, 0) befindet sich links unten in der Ecke des Ansichtsfensters. Da resize automatisch aufgerufen wird, wenn Sie Ihren Bildschirm auf diesen Bildschirm einstellen, ist dies die letzte Position, auf die Sie die Kamera eingestellt haben.

+0

Danke! Ich habe vergessen, dass ich die Position der Kamera ändere, wenn ich das Ansichtsfenster aktualisiere. –

Verwandte Themen