我正在用Java创建一个游戏(No Libraries)。 它是一个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
精灵的旋转是在另一个类“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;
}
答案 0 :(得分:0)
好的我修好了。
问题是游戏规模我正在制作2D游戏并设置宽度,高度和比例。 但我并没有按比例划分mouseX和mouseY。
HashMap<String, Object> map=new HashMap<>();
map.put("products", products);
map.put("hello","hai");
mv.addAllObjects(map);
return mv;
在搞乱游戏规模时我偶然发现了这个问题。