旋转和定位 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);
它将把光标画在中间。
我正在制作一个自上而下的射击游戏并设计了我的游戏,以便当鼠标在他周围移动时精灵会旋转,我有这个工作,但我希望精灵从枪指向鼠标。
如果你看这张图片:
十字线是鼠标所在的位置,精灵不面对鼠标。有什么方法可以旋转它吗?
最后,如上图所示,我的十字线锁定在 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);
它将把光标画在中间。