我有一个坦克图像的顶部枪的形象。 我想枪朝鼠标位置点,使得可以使用鼠标瞄准。 原枪图像将指向上方。 我使用Slick2D和它的形象类具有旋转功能,它接受一个角度。 我将如何去这样做呢?
Answer 1:
您可以通过要求输入对象查找用户的鼠标的位置。 这是通过询问GameContainer为输入完成。
Input userInput = gameContainer.getInput();
float mouseX = userInput.getMouseX();
float mouseY = userInput.getMouseY();
鼠标和枪的位置可被用来确定喷枪需要面对的角度。 我们可以想像绘制枪和鼠标,并找到这条线的角度之间的一条线。 该角度是枪需要以面对朝向鼠标“点”的角度。
Vector2f gunLocation = gun.getLocation();
float xDistance = mouseX - gunLocation.x;
float yDistance = mouseY - gunLocation.y;
double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
gunImage.setRotation((float)angleToTurn);
Answer 2:
像这样做的目的:
从罐到鼠标的方向是这样的:
float deltaX = mouse.x - tank.x;
float deltaY = mouse.y - tank.y;
// The resulting direction
return (int) (360 + Math.toDegrees(Math.atan2(deltaY, deltaX))) % 360;
只要更新坦克例如,在当前鼠标位置的方向mouseMoved
事件。
旋转图像:
看看堆栈溢出或Java文档: "Graphics2D", "affine transform", "translation"
。 也许你已经发动机提供了一些库函数。
希望帮助。
Answer 3:
要构建上述答案..
由于y轴下降尝试:
float deltaX = mouse.x - tank.x;
float deltaY = tank.y - mouse.y;
文章来源: Rotate image to 'point' to mouse position