2013-06-12 45 views
1

我使用libgdx渲染32x32瓦片(每個瓦片爲32x32像素)的地圖。我爲此使用了OrthogonalTiledMapRenderer。然後,我使用向上/向下/向右/向左移動可在屏幕上移動的簡單紋理。我想要的是根據地圖切片位置來獲取紋理的位置。例如,如果紋理位於tile(0,0)的頂部,我想知道這一點。到目前爲止,我已經嘗試使用camera.unproject(texcoordpositionVector)來獲得這些,但它一直沒有工作。獲取渲染對象的位置作爲地圖瓦片座標

編輯:這裏的地圖渲染器和攝像頭是如何設置的:

SCALE = 10; 
w = Gdx.graphics.getWidth(); 
h = Gdx.graphics.getHeight(); 

map = new TmxMapLoader().load("map.tmx"); 
camera = new OrthographicCamera(SCALE * (w/h), SCALE); 
renderer = new OrthogonalTiledMapRenderer(map, 1/32f); 

然後,渲染:

camera.update(); 
camera.apply(Gdx.graphics.getGL10()); 
renderer.setView(camera); 
renderer.render(); 
+0

你是如何設置你的相機和/或地圖渲染器的視圖? 'camera.unproject'是開始的正確的地方,但您可能需要根據您的單位規模按摩結果。 –

+0

@ P.T。我編輯了我的問題以包含這些信息。 –

回答

1

如果你的紋理被繪製相同的相機作爲地圖,然後它應該已經在瓷磚空間。如果您使用的是其他相機,則需要使用該相機投影位置,然後使用地圖相機取消投影。

+0

「用與地圖相同的相機繪製」是什麼意思?你的意思是我應該設置我用來渲染紋理爲'camera.projection'的SpriteBatch對象的投影矩陣嗎? –

+0

是的......通常情況下,您將使用地圖上相同的單位和地圖上繪製的對象。這意味着要麼配置您的對象使用地圖的比例尺,要麼設置您的地圖渲染器以匹配其他對象。 [Super Koalio](https://github.com/libgdx/libgdx/blob/master/tests/gdx-tests/src/com/badlogic/gdx/tests/superkoalio/SuperKoalio.java)示例顯示了一種解決方法。 –

+0

好的,我看了一下,現在使用'renderer.getSpriteBatch()'來繪製紋理。但問題是,它每次都會將紋理繪製得太大。 –