基本上,我是从上到下的角度致力于2D游戏。它是一个平铺的地图,其中每个图块为30x30,地图尺寸为19980px x 19980px。现在还有一个摄像头,它可以稍微跟在播放器后面,以使其顺畅。我可以实现Camera.x和Camera.y(摄像机左上角的坐标),以及map-width和map-height以及Window-width和Window-height,以及播放器.x和player.y。
现在有了这些信息,让我解释一下我的情况。我使用了MouseListener和MouseMotionListener,并且可以使用.getX();。和.getY();获取鼠标位置。但是,这不是地图的x和y坐标。我也想要这样,如果鼠标位于图块内,则它会在图块上绘制轮廓,因此我需要使鼠标坐标不仅是像素,而且基于图块(这很简单,因为我可以将其除以30)。
有人可以给我一些有关如何实现这一目标的想法吗? 我尝试这样做:
i = (int)(x+ Map.width - Game.camera.camX - (Game.WIDTH /2))/30;
j = (int)(y+ Map.height - Game.camera.camY - (Game.HEIGHT /2))/30;
但是没用
这是我的鼠标功能代码:
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
public class Mouse implements MouseListener,MouseMotionListener{
public static int x, y;
public static int i,j;
public void update() {
i = (int)(x+ Map.width - Game.camera.camX - (Game.WIDTH /2))/30;
j = (int)(y+ Map.height - Game.camera.camY - (Game.HEIGHT /2))/30;
}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {
x = e.getX();
y = e.getY();
}
}