По сути, я работаю над 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();
}
}