0

我遇到了一个问题,图像根据玩家位置和鼠标位置之间的差异旋转,但图像实际上并没有指向鼠标。我希望图像的顶部中心指向鼠标,而角度似乎总是关闭。我将在下面发布代码。

  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);
4

1 回答 1

0

Math.atan(double)的 javadoc表示返回值的范围可以从 -pi/2 到 pi/2。
所以你需要补偿那个返回值。

double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
if(angleToTurn < 0)
{
        angleToTurn += 360;
}
于 2013-04-15T11:10:43.657 回答