2016-07-04 83 views
0

海蘭大家,所以首先關閉所有,這裏是我的精靈的形象: enter image description hereXNA精靈運動出了錯

我縮小下來我的遊戲,所以它不是在遊戲中的大。

所以無論如何我想要的代碼如下的結果:

protected override void Update(GameTime gameTime) 
    { 
     // Allows the game to exit 
     if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
      this.Exit(); 

     spritePos = spriteVelocity + spritePos; 
     spriteR = new Rectangle((int)spritePos.X, (int)spritePos.Y, spriteT.Width, spriteT.Height); 
     spriteOrigin = new Vector2(spriteR.Width/2, spriteR.Height/2); 

     if (Keyboard.GetState().IsKeyDown(Keys.Right)) rotation += 0.1f; 
     if (Keyboard.GetState().IsKeyDown(Keys.Left)) rotation -= 0.1f; 

     if (Keyboard.GetState().IsKeyDown(Keys.Up)) 
     { 
      spriteVelocity.X = (float)Math.Cos(rotation) * tangentialVelocity; 
      spriteVelocity.Y = (float)Math.Sin(rotation) * tangentialVelocity; 
     } else if (spriteVelocity != Vector2.Zero) 
     { 
      float i = spriteVelocity.X; 
      float j = spriteVelocity.Y; 

      spriteVelocity.X = i -= friction * i; 
      spriteVelocity.Y = j -= friction * j; 
     } 

     base.Update(gameTime); 
    } 

,然後繪製方法:

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

     spriteBatch.Begin(); 

     foreach(Bushes bush in bushes) 
     { 
      bush.Draw(spriteBatch); 
     } 

     player.Draw(spriteBatch); 
     spriteBatch.Draw(spriteT, spritePos, null, Color.White, rotation, spriteOrigin, 0.1f, SpriteEffects.None, 0f); 
     spriteBatch.End(); 

     base.Draw(gameTime); 
    } 

的是,當我按「向上」箭頭這一點火箭應該進入方向它正在指向(因爲我可以用左右箭頭來旋轉它,使其指向需要的位置),但是這個代碼的結果是,當我按下向上箭頭時,精靈首先向右移動,當它旋轉它時沒有去哪裏它尖銳但有點橫向:/

我在這裏做錯了什麼?

PS。所有那些沒有在代碼中聲明和初始化的變量是全局變量,並在Initialize()和LoadContent()方法中初始化:/

回答

0

如果你的旋轉初始化爲0,它應該指向右側,看看0點在下面的TRIG圈:)

Trig Circle

您可以用Vector2.Transform計算你的方向,並作出參數(第一)Vector2(0,1)所以你的參考方向是向上。

或者您將精靈旋轉到右側並在Pi/2處初始化您的角度。

+0

非常感謝:D –