2011-11-11 9 views
1

[OK]を作り、問題ですが、私はから素敵な作業2Dカメラを見つけました:だから今、私は私の2Dトップダウンシューターゲームにそれを実装しているXNA 4.0 2Dカメラはので、ここでスプライトジャーキー

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

それはうまく動作します。カメラの位置をプレイヤーの位置と同じにすると、完全に機能します。ある程度。あなたはスプライトが行くと、再度少し行く見ることができるように

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

:私はカメラ位置=プレイヤーの位置を持っている場合今、それはこのように少し周りをピクピク。私は大まかな例を与えます: プレーヤーの位置が(100,100)の場合は右に移動し、(120,100)に進みます。今ではすべての数値が上手く、視覚化されています。私はそれがその時点までに、この、それのバグ私をやっている理由はわかりません>(120、100)

- >(130、100) -

(100、100):可視化は、このように思えますそれは私が修正するために取り組んでいるすべてです。今では、カメラをある点(1000,1000)の中心に置くと、プレーヤーはそんなに動き回らない。これにより、すべてがCamera2Dクラスを直接指すようになります。

とにかく、誰でも助けてくれれば大変感謝します!

  • ボビー

** EDIT ** 運動コード:http://xnachat.com/で提供されるヘルプに

//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

おかげで、私はすぐに問題を解決することができました。どのように

:私はプレイヤーにカメラを渡すのではなく何度もカメラの位置を設定

私は、カメラの位置に変更されたベクトルを追加しました。