旋转和定位XNA

时间:2015-04-18 14:58:12

标签: c# visual-studio xna 2d-games

我正在制作一个自上而下的射击游戏并设计了我的游戏,以便当鼠标在他周围移动时精灵旋转,我有这个工作,但我希望精灵指向枪中的鼠标。

如果你看这个图像:
i
十字线是鼠标所在的位置,精灵不是面向鼠标。有没有办法可以旋转它?

最后,我在上图中看到的十字线被锁定在Windows鼠标光标上,但是它跟在十字线的左上方跟随鼠标指针,因为它只是一个texture2d。有没有办法可以让十字线设置在中间位置。

1 个答案:

答案 0 :(得分:1)

关于第一个问题,你可以使用三角学:

Image showing how to apply trig

所以你应该可以使用像

这样的东西
Math.ArcTangent(Mouse.Y - Player.Y, Mouse.X - Player.X);

找到玩家需要转动的角度。

至于光标居中,您需要修改spritebatch.Draw()语句。

如上所述here

public void Draw (
         Texture2D texture,
         Vector2 position,
         Nullable<Rectangle> sourceRectangle,
         Color color,
         float rotation,
         Vector2 origin,
         Vector2 scale,
         SpriteEffects effects,
         float layerDepth
)

来源

  

输入:Vector2

     

精灵起源;默认值为(0,0)表示   左上角。

因此,如果您将draw语句中的原点更改为:

new Vector2(texture.width / 2, texture.height / 2);

它将光标居中。