2014-03-26 44 views
1

我製作了一個android/ios遊戲,並且它在Android上工作正常,只有一個我發佈了,但是說我做了一個紋理渲染50px×50px其他設備上的像素密度使紋理呈現不同有沒有一種辦法可以讓固定的世界座標,以便將圖像呈現相同的但不是隨機大小的紋理渲染,它只是擴展下降/上升Libgdx支持所有Android像素密度

+0

使用'Camera'這一點。如果你使用最新的libgdx版本,你也可以使用'ViewPort'。 – Springrbua

+0

@Springrbua我正在渲染使用紋理將影響如何繪製到屏幕上?使用相機和視口將影響任何紋理定位實施時,或者我可以在ApplicationListener類中實現這一點,一切都會自動調整?另外我將如何去實現這個?非常感謝你的幫助我只是不想放棄我的遊戲 – Frogzer

+0

永不放棄,你總是可以學習新的東西,這並不難。我寫了一個關於相機的答案,但對於視口你必須看看自己,因爲我從來沒有使用它們,我仍然使用9.9版本。 – Springrbua

回答

4

您可以設置一個Camera這樣的:

  1. new OrthographicCamera(viewPortWidth, viewPortHeight) for 2D遊戲
  2. new PerspectiveCamera(viewAngel, viewPortWidth, viewPortHeight)爲3D。

我現在用2D保持住。您設置的視口會自動放大以適應窗口/屏幕。因此,如果您在1600 * 900像素的窗口上使用80寬度和45高度的視口,則每個單位都會放大到20像素。在800 * 450像素的屏幕上,一臺設備只能使用10px。 默認情況下,相機的原點(P(0,0))位於屏幕中間。所以如果你在x = 0,y = 0時渲染一個Texture,寬度爲1,高度爲1,它的左下角在屏幕中間,它是20px * 20px大(在1600 * 900屏幕)。 要使攝像頭始於屏幕的左下角(正如我們通常所需的那樣),您需要通過調用camera.translate(viewPortWidth/2, viewPortHeight/2)或將其位置設爲camera.position.set(viewPortWidth/2, viewPortHeight/2)來移動它。之後,您必須致電camera.update(),讓其知道您已將其移動。在相機每改變一次(旋轉,平移...)。
要使用本相機呈現您的Texture s,您必須設置 s projectionMatrix,這就像世界的視圖或類似的東西。爲此,請致電:spriteBatch.setProjectionMatrix(camera.combined)。然後,如果你用這個spriteBatch繪製一切應該工作。

東西可以讀:Projection, viewport, camera The new Viewports

+0

聖潔的廢話謝謝@Springrbua我會盡快回復您 – Frogzer

+0

對不起,您可以問這個愚蠢的問題,但是用視口怎麼說80寬和45高你怎麼知道它會等於20px一個1600 * 900像素的屏幕?並且使用80 * 45就像隱形座標一樣? – Frogzer

+0

當您設置攝像機視口的寬度時,您會說:我想在屏幕寬度上有80個單位。 ays我有1600px,我想有80個單位,所以1600/80 = 20像素/單位。 – Springrbua