我刚刚开始学习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);
}
但它改变了精灵的位置,我猜测必须有更好的方法,对吗?
谢谢!
答案 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);