【问题标题】:Rotating and Positioning XNA旋转和定位 XNA
【发布时间】:2015-04-18 14:58:12
【问题描述】:

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

如果你看这张图片:

十字准线是鼠标所在的位置,并且精灵不面向鼠标。有什么办法可以旋转吗?

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

【问题讨论】:

  • 第一个问题是一个基本的数学公式。在谷歌上查找。你的第二个问题真的很简单。只需将十字准线的位置移动到纹理宽度和高度的 50%。

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


【解决方案1】:

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

所以你应该能够使用类似的东西

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);

它会将光标居中绘制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2011-07-17
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多