我目前有一個遊戲,其中有一個地圖是480x3200,一個人從頂部倒下。相機跟隨着這個人,並且在這個人墜落時有平臺。平臺需要是可觸摸的,所以我可以在遊戲中旋轉和移動它們,所以我將它製作爲圖像,當它最初只是一個精靈。libGDX移動攝像頭和圖像
當我將它從精靈改爲圖像時,一切運行良好,除非人跌倒(相機開始向下移動並跟隨人物),平臺也隨相機移動,因此它看起來也是這樣墜落。平臺應該停留在一個地方,不要隨着相機移動,因此相機一直向下移動,平臺最終會從視野中消失。
設置的平臺,將其添加到舞臺
@Override
public void show() {
...
platform = new Image(new Texture(Gdx.files.internal("img_platform.png")));
platform.setX(2);
platform.setY(110);
platform.setOrigin(platform.getWidth()/2, platform.getHeight()/2);
@Override
public void render(float delta) {
....
stage.addActor(platform);
}
我周圍的API看,並不能確定相機,舞臺,或圖像是否需要改變,或者別的東西我沒有想到。有任何想法嗎?
編輯:
public WorldRenderer(FallDown game, SpriteBatch batch, World w) {
this.cam = new OrthographicCamera(CAMERA_WIDTH, CAMERA_HEIGHT);
this.cam.position.set(CAMERA_WIDTH/2, CAMERA_HEIGHT/2, 0);
this.cam.setToOrtho(false, CAMERA_WIDTH, CAMERA_HEIGHT);
cam.position.set(CAMERA_WIDTH/2, 105, 0);
stage = new Stage(480, 800, true);
platformTexture = new Image(new Texture(Gdx.files.internal("img_platform.png")));
platformTexture.setX(2);
platformTexture.setY(100);
platformTexture.setOrigin(platformTexture.getWidth()/2, platformTexture.getHeight()/2);
...
}
public void render(float delta) {
stage.addActor(platformTexture);
moveCamera();
...
}
private void moveCamera() {
if (Person.getPosition().y < cam.position.y)
cam.position.y = Person.getPosition().y;
cam.update();
}
...
將stage.addActor(platform)移動到show()方法。您目前正在每個渲染循環中重新添加actor到舞臺。 – Aert
@Aert我添加stage.addActor(平臺)show(),它給了我一個NullPointerException。但我不認爲添加show()會在我的情況下工作,因爲我還需要在平臺上進行碰撞檢測 – Jon