2011-11-11 116 views
1

好了,所以這裏的問題是,我找到了一個不錯的工作2D相機從:XNA 4.0 2D相機使精靈生澀

http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/

所以,現在,我已經實現了它進入我的2D自上而下的射手遊戲它很好地工作。當我的相機位置與玩家位置相同時,它可以很好地工作;在一定程度上。現在,當我有相機位置=球員的位置,它來回顛簸這樣一點點:

http://www.youtube.com/watch?v=mh4Tx9xg324

正如你所看到的精靈去,然後又回到一點點。我將舉一個粗略的例子: 如果玩家的位置是(100,100),我會向右移動並轉到(120,100)。現在所有的數字都很好,它的可視化。可視化似乎是這樣的:

(100,100) - >(130,100) - >(120,100)

我不知道爲什麼它是這樣做的,它的錯誤我到如此地步,這正是我正在努力解決的問題。現在,當我將攝像頭集中在一個點(1000,1000)上時,玩家不會像這樣左右搖晃。所以這使得一切都直接指向Camera2D類。

無論如何,如果任何人都可以幫助它將不勝感激!

  • 鮑比

**編輯** 移動代碼:

//Update Movement for user controlled sprites 
    //A bit rough around the edges at the moment... 
    public void UpdateMovement(Input input) { 
     //Get ready to point sprite at mouse location in relation to the center of the screen 
     MouseState mouse = Mouse.GetState(); 
     mouseLoc = new Vector2(mouse.X, mouse.Y); 

     direction = new Vector2(512, 300) - mouseLoc; 
     angle = (float)((Math.Atan2(-direction.Y, -direction.X))); 

     m_Rotation = angle; 
     //End angle information 

     //reset the changed vector 2 back to zero 
     changed = Vector2.Zero; 

     //checkCollision(vector2) 
     //it gets the estimated new point and if it doesnt hit a wall 
     //it sets to the new point. 
     if (input.CurrentKeyboardState.IsKeyDown(Keys.A)) { 
      changed.X = -m_Speed; 
      if (!checkCollision(changed)) { 
       m_Position += changed; 
      } 
     } 

     if (input.CurrentKeyboardState.IsKeyDown(Keys.D)) { 
      changed.X = m_Speed; 
      if (!checkCollision(changed)) { 
       m_Position += changed; 
      } 
     } 

     if (input.CurrentKeyboardState.IsKeyDown(Keys.W)) { 
      changed.Y = -m_Speed; 
      if (!checkCollision(changed)) { 
       m_Position += changed; 
      } 
     } 

     if (input.CurrentKeyboardState.IsKeyDown(Keys.S)) { 
      changed.Y = m_Speed; 
      if (!checkCollision(changed)) { 
       m_Position += changed; 
      } 
     } 
    } 
+0

你能發佈你的移動代碼嗎? –

+0

@NeilKnight像你問的那樣添加了移動代碼 – Mister

回答

1

由於在http://xnachat.com/提供的幫助,我能很快解決問題。

如何:

我通過相機給玩家而不是通過設置相機的位置和在我剛添加的改變向量到相機位置。