旋转和重新缩放Sprite XNA Mid-Game

时间:2015-03-08 12:36:59

标签: c# visual-studio xna rotation sprite

我刚刚开始学习XNA 4.0,我有一个问题。我创建了一个精灵,我需要在特定事件发生时旋转它。我还想知道如何在游戏中间重新缩放同一个精灵。 我试过这个:

Texture2D theSprite;

  protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);

        if (direction=="right")
        {
            spriteBatch.Draw(theSprite, spritePosition, null, Color.White, 0, new Vector2(0, 0), .7f, SpriteEffects.None, 0); 
        }

但它改变了精灵的位置,我猜测必须有更好的方法,对吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

由于旋转中心位于矢量(0,0),它看起来会改变位置,你必须把它改成对象的中间。

Origin = new Vector2(texture.Width / 2, texture.Height / 2);
Rotate = MathHelper.ToRadians(45)
Scale = 0.7f

spriteBatch.Draw(theSprite, spritePosition, null, Color.White, Rotate, Origin, Scale , SpriteEffects.None, 0);

enter image description here