java将图像旋转到“指向”鼠标位置 1 年,3 月 Questions & Answers 8597 我有一个坦克图像上面的枪图像。我想让枪指向鼠标的位置,这样鼠标就可以用来瞄准了。原始枪图像将指向上方。我使用的是Slick2D,它的image类有一个旋转函数,它有一个角度。我该怎么做呢
# 2 楼答案 通过询问输入对象,可以找到用户鼠标的位置。这是通过向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);
# 3 楼答案 瞄准是这样做的: 从水箱到鼠标的方向如下: 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"。也许您的引擎已经提供了一些库函数 希望有帮助
# 1 楼答案
以上述答案为基础
由于y轴正在减小,请尝试:
# 2 楼答案
通过询问输入对象,可以找到用户鼠标的位置。这是通过向GameContainer请求输入来完成的
鼠标和枪的位置可用于确定枪需要面对的角度。我们可以想象在枪和鼠标之间画一条线,然后找到这条线的角度。此角度是枪需要面对的角度,以便“指向”鼠标
# 3 楼答案
瞄准是这样做的:
从水箱到鼠标的方向如下:
只需将坦克的方向更新到当前鼠标位置,例如在
mouseMoved
事件中旋转图像:
看看堆栈溢出或java文档:
"Graphics2D", "affine transform", "translation"
。也许您的引擎已经提供了一些库函数希望有帮助