【问题标题】:Java Slick2d - How to translate mouse coordinates to world coordinatesJava Slick2d - 如何将鼠标坐标转换为世界坐标
【发布时间】:2012-04-12 02:06:21
【问题描述】:

我正在翻译我的主课的渲染。如何根据翻译获得鼠标位置?

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();

我通过 .2f * delta 更新 keydown 上的玩家位置

图片帮助解释

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

【问题讨论】:

标签: java mouse coordinates slick2d


【解决方案1】:

世界坐标 = 相机位置 + 鼠标位置

在我对这个问题的回答中计算/解释了相机位置:Slick2D and JBox2D. How to draw

【讨论】:

  • +1 到这个和链接的帖子。我喜欢在 cmets 中解释的 ASCII 图形。
  • 我还应该使用 graphics.translate 吗?
【解决方案2】:

您正在制作一个基于图块的游戏,其中每个图块似乎具有相同的大小。对于这种情况,您不需要广义的非投影。

想象一下完整的地图。视口只显示了它的一部分;您需要将视口的(x,y) 偏移量存储到完整地图中的某个地方。由于鼠标坐标是相对于视口的,因此您需要将此偏移量添加到鼠标坐标上。现在,您可以通过对移动的鼠标坐标与图块的宽度和高度进行模运算来轻松获取图块坐标。

实际上,这是从窗口坐标到平铺坐标的坐标变换。

【讨论】:

  • 究竟如何获得视口和偏移量?
  • 请阅读@normalocity 在他史诗般的回答中给出的出色建议。 :) 视口是隐式的(“相机看到”),偏移量描述了视口在世界中的移动量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多