2013-07-03 124 views
2

我目前有一個遊戲,其中有一個地圖是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(); 
} 

... 
+0

將stage.addActor(platform)移動到show()方法。您目前正在每個渲染循環中重新添加actor到舞臺。 – Aert

+0

@Aert我添加stage.addActor(平臺)show(),它給了我一個NullPointerException。但我不認爲添加show()會在我的情況下工作,因爲我還需要在平臺上進行碰撞檢測 – Jon

回答

0

而不是使用圖像,我決定只使用一個精靈。它允許我做所有我需要做的事情,並且我沒有將舞臺當作當前屏幕的問題

1

通常這件事是通過設置在演員的攝像頭(這是倒下)和向下移動你的演員來實現的。隨着演員向下移動,相機將跟着它保持平臺靜止。

這是否有幫助?

+0

這就是我目前設置相機的方式。當人的位置到達某個點時,我有一種方法可以將相機向下移動。 – Jon

+0

Sry my bad。其實你必須拿2臺攝像機。通常一個用於遊戲屏幕,另一個用於遊戲世界。遊戲畫面中的相機不會移動。現在使用靜態相機繪製您的平臺,並使用移動相機繪製其他東西。這個想法很簡單,遊戲中的所有靜態事物都將使用靜態相機,而動態事物將使用移動相機。任何參考檢查超級跳線源。 https://github.com/libgdx/libgdx/tree/master/demos/superjumper – Pranav008

+0

我有點讓它設置你以前談論的方式。我在我的GameScreen中有一個不移動的攝像頭,在WorldRenderer中有另一個移動攝像頭(我最初畫出了我的平臺精靈)。我將我的代碼移到了WorldRenderer,並試圖讓它工作,但該圖像仍然不留在一個地方。我編輯了我的帖子並更新了我的當前代碼。我很欣賞迄今爲止的幫助 – Jon