Java将mouseX和mouseY转换为更大的平铺地图的坐标

时间:2019-02-18 20:54:49

标签: java 2d mouselistener tile mousemotionlistener

基本上,我是从上到下的角度致力于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();
    }

}

0 个答案:

没有答案