我正在制作一个自上而下的射击游戏并设计了我的游戏,以便当鼠标在他周围移动时精灵旋转,我有这个工作,但我希望精灵指向枪中的鼠标。
如果你看这个图像:
十字线是鼠标所在的位置,精灵不是面向鼠标。有没有办法可以旋转它?
最后,我在上图中看到的十字线被锁定在Windows鼠标光标上,但是它跟在十字线的左上方跟随鼠标指针,因为它只是一个texture2d。有没有办法可以让十字线设置在中间位置。
答案 0 :(得分: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);
它将光标居中。