2012-04-11 193 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

相关问题