旋转图像以“点”到鼠标位置(Rotate image to 'point' to m

2019-07-29 06:52发布

我有一个坦克图像的顶部枪的形象。 我想枪朝鼠标位置点,使得可以使用鼠标瞄准。 原枪图像将指向上方。 我使用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
标签: java slick2d