我遇到的问题是图像根据玩家位置和鼠标位置之间的差异而旋转,但图像实际上并不指向鼠标。我希望图像的顶部中心指向鼠标,看起来角度总是关闭。我将在下面发布代码。
Input input = gc.getInput();
if (input.isKeyDown(Input.KEY_W))
{
position.y -= 3;
}
if (input.isKeyDown(Input.KEY_A))
{
position.x -= 3;
}
if (input.isKeyDown(Input.KEY_S))
{
position.y += 3;
}
if (input.isKeyDown(Input.KEY_D))
{
position.x += 3;
}
float xDistance = input.getAbsoluteMouseX() - position.x;
float yDistance = input.getAbsoluteMouseY() - position.y;
double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
entityImage.setRotation((float) angleToTurn);
答案 0 :(得分:0)
Math.atan(double)的javadoc表示返回值的范围可以从-pi / 2到pi / 2.
因此,您需要补偿该返回值。
double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
if(angleToTurn < 0)
{
angleToTurn += 360;
}