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() {
}
}
Danke! Ich habe vergessen, dass ich die Position der Kamera ändere, wenn ich das Ansichtsfenster aktualisiere. –