0

所以我想旋转我的精灵,让它总是看着鼠标的位置。我正在使用以下代码:

        public void draw(SpriteBatch sb)
    {
        int mouse_x = Mouse.GetState().X;
        int mouse_y = Mouse.GetState().Y;
        float angles = Calc.getAngle(new Vector2(mouse_x, mouse_y));

        sb.Draw(texture, position, null, Color.White, angles, origins, SpriteEffects.None, 1);

    }

    //Calc.cs method
    public static float getAngle(this Vector2 v)
    {
        return (float)Math.Atan2(v.Y, v.X);
    }

我收到以下错误:

参数 2:无法从 'Microsoft.Xna.Framework.Vector2' 转换为 'Microsoft.Xna.Framework.Rectangle'

我以为我的参数是正确的,但显然不是。我不知道为什么它不接受该位置的向量。

请问有什么帮助吗?

4

3 回答 3

3

根据MSDN,具有 8 个参数的方法采用 Rectangle,而不是 Vector2。有一些方法有 9 个参数和一个 Vector2。你缺少一个参数吗?

于 2012-11-20T10:12:00.810 回答
1

您需要在 Draw 方法的 scale 参数的“origins”之后添加一个浮点数,并且由于您不想更改纹理的大小,因此 scale 应为 1。(您需要使用 Draw 方法的第 6 次重载,该方法采用 vector2对于位置和用于缩放的浮点数,另一种解决方案是使用第 5 次重载,在这种情况下,您必须使用矩形作为位置,并且不需要缩放)

于 2012-11-22T10:38:11.013 回答
0

您也可以通过将 vector.X 和 vector.Y 放在矩形的新实例中并在 spritebactch.Draw 方法中使用矩形实例而不是 vector2 来做到这一点

于 2013-06-28T13:04:23.617 回答