2013-08-05 58 views
0

我有問題來集中我的精靈動畫有誰能給我一個燈?不能集中動畫(libGdx)

public void render() { 
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    stateTime += Gdx.graphics.getDeltaTime();      
    currentFrame = walkAnimation.getKeyFrame(stateTime, true);  



    batch.setProjectionMatrix(cam.combined); 
    batch.begin(); 
    batch.draw(currentFrame, Gdx.graphics.getWidth()/2 - ((walkSheet.getWidth()/FRAME_COLS)/2), Gdx.graphics.getHeight()/2 - ((walkSheet.getHeight()/FRAME_ROWS)/2), width/2, height/4);       

我的動畫正在向左畫幾個像素。

+0

它看起來像你試圖用'walkSheet.getWidth()/ FRAME_COLS'計算當前幀的寬度...爲什麼不直接調用'currentFrame.getWidth()'而已? – DannyMo

+0

@damo感謝您的答案,但它只是給了我相同的結果,當在桌面上運行時,動畫會稍微向右移動,在我的手機上運行時會稍微向左,可能不是那段代碼我必須改變? –

+0

我也會確保你正確定義了你的TextureRegion。 'TextureRegion'可能會在屏幕中居中,但精靈可能不會在'TextureRegion'中居中。 – DannyMo

回答

1

對於x位置,你有─

Gdx.graphics.getWidth()/2 - ((walkSheet.getWidth()/FRAME_COLS)/2) 

如果每個動畫形象是100像素寬,你爲什麼不使用 -

private static final float WALK_ANIM_WIDTH = 100f; 

X位置會那麼 -

Gdx.graphics.getWidth()/2f - WALK_ANIM_WIDTH/2f 

UPDATE

從您的評論的基礎,你可以有一些喜歡 -

public static final int SCREEN_WIDTH = 800; 
public static final int SCREEN_HEIGHT = 520; 

guiCam = new OrthographicCamera(SCREEN_WIDTH, SCREEN_HEIGHT); 
guiCam.position.set(SCREEN_WIDTH/2f, SCREEN_HEIGHT/2f, 0); 

現在,而不是使用「Gdx.graphics.getWidth()」,你可以簡單地使用SCREEN_WIDTH。

查看libGDX中的SuperJumper演示。你會看到他們在遊戲世界中如何使用視口。

+0

謝謝,這有助於我使代碼更容易,但是,如果我想根據不同的分辨率調整我的動畫呢?它會繼續工作嗎?我非常喜歡使用Gdx.graphics.getWidth/2,Gdx.graphics.getHeight/4來根據當前分辨率調整動畫大小,這就是我認爲這會讓我的動畫無法居中。我該如何解決這個問題?我希望能夠很容易地理解我在寫什麼,因爲英語不是我的母語 –

+0

@IvanCarlos只要您使用視口,它仍然會工作。要測試它,您可以調整您的桌面應用程序的大小。 :)看看libGDX中的SuperJumper演示。您將看到FRUSTUM_WIDTH和FRUSTUM_HEIGHT以及它們如何使用,以便即使調整大小,也會相應地縮放。 –

+0

非常感謝幫助我。現在當我改變窗口的大小時,動畫也會調整大小,但它會離開中心,當我縮小屏幕時,會根據屏幕大小進行左下角動畫,當動畫變大時走向右側和頂部,我怎樣才能使動畫集中在相機? –