如何在鼠标上制作精灵点。 XNA C#

时间:2010-07-30 06:51:55

标签: sprite trigonometry

如果你看一下这个图link text,我需要通过知道直角三角形所有边的长度来找到角度A.

我不知道触发并需要一些帮助。

2 个答案:

答案 0 :(得分:6)

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

如何在鼠标上制作精灵点。 XNA C#:

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

所以让我们使用数学库:

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

干杯,

TomHashNL

答案 1 :(得分:1)

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

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

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