代码之家  ›  专栏  ›  技术社区  ›  redcodefinal

如何使精灵指向鼠标。XNA C

  •  2
  • redcodefinal  · 技术社区  · 14 年前

    如果你看这个图表 link text 我只需要知道直角三角形所有边的长度就可以求出角度A。

    我不懂三角函数,需要帮助。

    2 回复  |  直到 11 年前
        1
  •  6
  •   TomHashNL    14 年前

    你的帖子里实际上有两个问题。

    如何使精灵指向鼠标。XNA C:

    您必须计算精灵位置和鼠标位置之间的方向。 这可以使用三角函数来完成。在这种情况下:arcngens2

    那么让我们使用数学库:

    MouseState mouseState = Mouse.GetState();
    Math.Atan2((double)mouseState.Y - sprite.Y, (double)mouseState.X - sprite.X); //this will return the angle(in radians) from sprite to mouse.
    

    在三角法示例中,您将看到这些值实际上是:

    Math.Atan2(BC, AC);
    

    Math.Atan2(Ydiff, Xdiff);
    

    我希望这有助于=d

    干杯,

    托马什尼

        2
  •  1
  •   Tyler Forsythe    11 年前

    我发现我的最终解决方案是:

    Vector2 direction = targetPosition - currentPosition;
    direction.Normalize();
    float rotationInRadians = (float)Math.Atan2((double)direction.Y, 
                                 (double)direction.X) + MathHelper.PiOver2;
    

    rotationRadians是一个原始值,可以为正确的旋转量传递给sprite批处理——不需要进一步的代码。另外,如果您在一个角而不是中间旋转精灵,您可能会注意到错误的结果。