旋转图像以“指向”鼠标位置

时间:2012-05-05 12:48:28

标签: java slick2d

我在坦克图像上方有一张枪图像。我希望枪指向鼠标位置,以便鼠标可以用来瞄准。原始枪图像将指向上方。我正在使用Slick2D,它的图像类有一个旋转功能,需要一个角度。我该怎么做呢?

3 个答案:

答案 0 :(得分:7)

您可以通过询问输入对象来找到用户鼠标的位置。这是通过向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);

答案 1 :(得分:0)

瞄准是这样完成的:

从坦克到鼠标的方向如下:

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 doc:"Graphics2D", "affine transform", "translation"。也许您的引擎已经提供了一些库函数。

希望有所帮助。

答案 2 :(得分:0)

以上述答案为基础......

因为y轴正在递减,请尝试:

float deltaX = mouse.x - tank.x;
float deltaY = tank.y - mouse.y;