Java преобразует mouseX и mouseY в координаты большой мозаичной карты - PullRequest
0 голосов
/ 18 февраля 2019

По сути, я работаю над 2D-игрой сверху вниз.Это мозаичная карта, где каждая плитка размером 30x30 с размером карты 19980px на 19980px.Теперь есть также камера, которая слегка следует за игроком, так что она плавная.Я могу получить Camera.x и Camera.y (координаты верхнего левого угла камеры), а также ширину карты и высоту карты, а также ширину окна и высоту окна, а также игрока.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();
    }

}
...