旋转和定位 XNA

Rotating and Positioning XNA

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

如果你看这张图片:

十字线是鼠标所在的位置,精灵不面对鼠标。有什么方法可以旋转它吗?

最后,如上图所示,我的十字线锁定在 Windows 鼠标光标上,但是它从十字线的左上角跟随鼠标指针,因为它只是纹理 2d。有什么办法可以把十字准线设置到中间吗

对于你的第一个问题,你可以使用三角函数:

所以你应该可以使用

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
)

起源

Type: Vector2

The sprite origin; the default is (0,0) which represents the upper-left corner.

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

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

它将把光标画在中间。