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 つのパラメーターを持つメソッドは、Vector2 ではなく Rectangle を取ります。9 つのパラメーターと Vector2 を持つメソッドがいくつかあります。パラメータがありませんか?

于 2012-11-20T10:12:00.810 に答える
1

Draw メソッドのスケール パラメータの「origins」の後に浮動小数点数を追加する必要があります。また、テクスチャのサイズを変更したくないため、スケールは 1 にする必要があります (Vector2 を取る Draw メソッドの 6 番目のオーバーロードを使用する必要があります)。位置とスケールの浮動小数点数の場合、別の解決策は 5 番目のオーバーロードを使用することです。この場合、位置に四角形を使用する必要があり、スケールは必要ありません)

于 2012-11-22T10:38:11.013 に答える
0

vector.X と vector.Y を長方形の新しいインスタンスに配置し、spritebactch.Draw メソッドで vector2 の代わりに長方形のインスタンスを使用することによっても実行できます。

于 2013-06-28T13:04:23.617 に答える