Java 2D 游戏旋转导致鼠标故障?
Java 2D Game rotate to mouse glitch?
我正在 Java(无库)中制作游戏。
这是一款 2D 俯视游戏,玩家可以在其中行走并面向鼠标光标。
public Player(int x, int y, int health, int tileId) {
super(x, y, health);
tile = new Tile(tileId, false);
mouseInput = new MouseHandler(screen);
}
public void tick() { // Executed by game tick.
// x = playerX and y = playerY
int cursorX = mouseInput.getMousePos()[0];
int cursorY = mouseInput.getMousePos()[1];
float X = cursorX - x;
float Y = cursorY - y;
rotation = Math.atan2(Y, X);
}
只要玩家在 (0,0),它看起来就不错
如果玩家移动并且鼠标坐标变为负值,它会开始显示奇怪的行为(查看下面的视频)
Youtube: https://www.youtube.com/watch?v=M6ZHCrWvt3Y
精灵的旋转是在另一个class'Screen.java'
中完成的
通过使用:
if (rotation < 360)
rotation++
else
rotation = 0
我确认旋转工作正常。
编辑:
public BufferedImage rotate(BufferedImage img, double degree) {
AffineTransform tx = new AffineTransform();
tx.rotate(degree, 4, 4);
AffineTransformOp op = new AffineTransformOp(tx,AffineTransformOp.TYPE_BILINEAR);
BufferedImage image = op.filter(img,null);
return image;
}
好的,我修好了。
问题是我正在制作 2d 游戏并设置宽度、高度和比例的游戏比例。
但是我没有按比例划分mouseX和mouseY。
public void mouseMoved(MouseEvent e) {
mouseX = e.getX() / game.getScale();
mouseY = e.getY() / game.getScale();
}
我在弄乱gamescale的时候无意中发现了这个问题
我正在 Java(无库)中制作游戏。 这是一款 2D 俯视游戏,玩家可以在其中行走并面向鼠标光标。
public Player(int x, int y, int health, int tileId) {
super(x, y, health);
tile = new Tile(tileId, false);
mouseInput = new MouseHandler(screen);
}
public void tick() { // Executed by game tick.
// x = playerX and y = playerY
int cursorX = mouseInput.getMousePos()[0];
int cursorY = mouseInput.getMousePos()[1];
float X = cursorX - x;
float Y = cursorY - y;
rotation = Math.atan2(Y, X);
}
只要玩家在 (0,0),它看起来就不错 如果玩家移动并且鼠标坐标变为负值,它会开始显示奇怪的行为(查看下面的视频)
Youtube: https://www.youtube.com/watch?v=M6ZHCrWvt3Y
精灵的旋转是在另一个class'Screen.java'
中完成的通过使用:
if (rotation < 360)
rotation++
else
rotation = 0
我确认旋转工作正常。
编辑:
public BufferedImage rotate(BufferedImage img, double degree) {
AffineTransform tx = new AffineTransform();
tx.rotate(degree, 4, 4);
AffineTransformOp op = new AffineTransformOp(tx,AffineTransformOp.TYPE_BILINEAR);
BufferedImage image = op.filter(img,null);
return image;
}
好的,我修好了。
问题是我正在制作 2d 游戏并设置宽度、高度和比例的游戏比例。 但是我没有按比例划分mouseX和mouseY。
public void mouseMoved(MouseEvent e) {
mouseX = e.getX() / game.getScale();
mouseY = e.getY() / game.getScale();
}
我在弄乱gamescale的时候无意中发现了这个问题