所以我想旋转我的精灵,以便始终看着鼠标位置。我使用以下代码:
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'
我以为我的参数是正确的,但显然不是。我无法弄清楚为什么它不会接受该位置的矢量。
请帮忙吗?
答案 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