2014-03-05 65 views
0

早先發布了關於這方面的內容。這是一個後續行動。我有一個以前存在的Java遊戲正在進行中。其約95%完成。如果我安裝libGdx,我可以使用以前存在的與LibGDX正交相機的Java代碼來創建一個android應用程序嗎?我計劃僅使用相機調整屏幕大小以適合手機。我不打算使用任何其他像spritebatch等任何人都有這方面的經驗?將正交相機整合到現有的Java遊戲中

回答

1

這將工作。您關心的方法不依賴於libgdx引擎中的GL上下文,因此您可以實例化OrthographicCamera並通常在您自己的遊戲代碼中使用它。

使用空的構造函數實例化OrthographicCamera,然後調用setToOrtho,使其具有所需的寬度和高度以用於屏幕的視口。這將取決於你正在使用你的精靈的規模什麼單位,但你可以做這樣的事情來設置你的視口:

private static final float MIN_SCENE_HEIGHT_IN_GAME_UNITS= 480f; //FOR EXAMPLE 
private static final float MIN_SCENE_WIDTH_IN_GAME_UNITS= 760f; 

    if (((float)screenWidthInPixels/(float)screenHeightInPixels) > (MIN_SCENE_WIDTH_IN_GAME_UNITS/MIN_SCENE_HEIGHT_IN_GAME_UNITS)){ 
     orthoCam.setToOrtho(false, MIN_SCENE_HEIGHT_IN_GAME_UNITS*(float)screenWidthInPixels/(float)screenHeightInPixels, MIN_SCENE_HEIGHT_IN_GAME_UNITS); 
    } else { 
     orthoCam.setToOrtho(false, MIN_SCENE_WIDTH, MIN_SCENE_WIDTH_IN_GAME_UNITS*(float)screenHeightInPixels/(float)screenWidthInPixels); 
    } 

false S上方的桑尼朝上,這樣你就可以如果你願意的話可以翻轉。如果您需要將相機移至0,0,請致電orthocam.position.set(x,y,z),然後orthocam.update()

然後你可以從orthographicCamera.combined獲取你需要的矩陣。

如果您使用GL ES 1.0,你可以這樣設置矩陣:

gl.glMatrixMode(GL10.GL_PROJECTION); 
gl.glLoadMatrixf(orthographicCamera.combined.val, 0); 

否則,你可以直接在你的着色器使用orthographicCamera.combined

你也可以克隆OrthographicCamera類和它的超類照相機放到你的項目中,並移除你將不會使用的方法來移除引擎其他部分的依賴關係,並將它切換爲使用你自己版本的Vector3和Matrix4。

+0

謝謝,這是讓人放心的。 –

+0

我將首先實現這個,一個快速問題。我有一個創建窗口的框架類,以及一個使用swing在窗口中打印圖像的Screen類。攝像機是否應該在框架類中使用?它會去哪裏?謝謝, –

+0

這有點超出我了。我從來沒有試圖用libgdx來使用Swing。我猜如果你使用框架類爲你的遊戲場景和屏幕類爲HUD的東西,那麼你可能想爲他們每個人做一個單獨的相機。相機用於SpriteBatch和其他libgdx渲染器。如果你的Screen類沒有使用libgdx來繪製任何東西,那麼它就沒有指向它的攝像頭了。 – Tenfour04