在XNA中旋转精灵

时间:2012-11-20 09:35:48

标签: c# xna rotation

所以我想旋转我的精灵,以便始终看着鼠标位置。我使用以下代码:

        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'

我以为我的参数是正确的,但显然不是。我无法弄清楚为什么它不会接受该位置的矢量。

请帮忙吗?

3 个答案:

答案 0 :(得分:3)

根据MSDN,带有8个参数的方法采用Rectangle,而不是Vector2。有一些方法有9个参数和一个Vector2。你错过了一个参数吗?

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您也可以将vector.X和vector.Y放在新的矩形实例中,并在spritebatch.Draw方法中使用矩形实例而不是vector2