2012-04-11 191 views
0

我正在翻譯我的主類的渲染。如何根據翻譯獲得鼠標位置?Java Slick2d - 如何將鼠標座標轉換爲世界座標

public void render(GameContainer gc, Graphics g) 
     throws SlickException 
{ 
    float centerX = 800/2; 
    float centerY = 600/2; 
    g.translate(centerX, centerY); 
    g.translate(-player.playerX, -player.playerY); 
    gen.render(g); 
    player.render(g); 
} 

playerX = 800 /2 - sprite.getWidth(); 
playerY = 600 /2 - sprite.getHeight(); 

我更新播放位置上的keydown通過.2f *三角洲

圖片,以幫助解釋

i92.photobucket.com/albums/l22/occ31191/Untitled- 4.png

+0

你能更具體?標題說_mouse世界_,你的問題要求相反。 – 2012-04-11 05:01:36

+0

我無法編輯圖片,所以我上傳到這裏http://i92.photobucket.com/albums/l22/occ31191/Untitled-4.png這應該有助於更好地解釋我在說什麼。對不起,我不清楚 – Corey 2012-04-11 05:09:30

回答

1

您正在製作基於瓦片的遊戲,其中每個瓦片似乎具有相同的大小。對於這種情況,您不需要廣義的未投影。

想象一下完整的地圖。視口僅顯示其一部分;某處需要將視口的(x,y)摺頁存儲到完整的地圖中。由於鼠標座標是相對於視口的,因此您需要將此偏移量添加到鼠標座標。現在,您可以使用模塊的寬度和高度對移位後的鼠標座標進行模運算,輕鬆獲取拼貼座標。

實際上,這是一個座標轉換窗口座標到瓦片座標。

+0

您究竟如何獲得視口和偏移量? – Corey 2012-04-11 17:32:30

+0

請在史詩般的回答中給出@normalocity的優秀建議。 :)視口是隱含的(「相機看到」),偏移量描述了視口在世界上移動了多少。 – 2012-04-11 17:47:47

2

世界座標=相機位置+鼠標位置

攝像機位置計算/在我回答這個問題解釋說:Slick2D and JBox2D. How to draw

+0

+1和鏈接的帖子。我喜歡在評論中使用ASCII圖形進行解釋。 – 2012-04-11 17:49:17

+0

我還應該使用graphics.translate嗎? – Corey 2012-04-11 18:05:13

相關問題