2012-11-01 93 views
-1

當用AS3和Box2D創建一個播放器時,我們可以讓玩家移動,但是我們不能讓玩家像移動到AS3一樣移動,例如x ++;而不是ApplyImpulse(新的b2Vec2(1,0),GetWorldCenter())。我們如何讓玩家更像flash一樣移動,我們也嘗試過ApplyForce和SetPosition,這些都無法正常工作!玩家很浮動或不立即響應控制,任何意見將不勝感激!AS3 Box2D Player Movement

如果有問題,請你解釋一下,而不是摔倒和離開?

回答

1

你爲什麼不嘗試使用GetLinerVelocity然後ApplyImpulse,它可以工作,我這個做禮儀,當然我用鑰匙正好前兩個功能做......我的意思是這樣的:

的player_normal只是休息時的Player(對象)。當然還有player_max_speed和player_speed只是其他禮儀我加移動,因爲我喜歡...

  player_speed = 2; 
      player_max_speed = 4; 
      player_normal = new b2Vec2(0, 0); 

這正好在主函數。 速度和max_speed你設置他們爲一個數字變種,而正常只是b2Vec2。

而當你按下再向上的關鍵,這是關鍵的功能:

private function apreto(e:KeyboardEvent):void 
     { 
      switch (e.keyCode) 
      { 
       case 37: 
        left = true; 
        break; 
} 

private function suelto(e:KeyboardEvent):void 
     { 
      switch (e.keyCode) 
      { 
       case 37: 
        left = false; 
        break; 
} 

當然的「左」是一個布爾值。非常簡單,我認爲...並且你必須對每個鍵(右,上,下)都做同樣的事情,這取決於你想要什麼樣的鍵。例如,鍵盤中的數字37 =鍵。

然後代碼給移動播放器(在更新):

if (player_normal.x >= 0) 
      { 
       if (left) 
       { 
        if (player.GetLinearVelocity().x > -player_max_speed) 
        { 
         player.ApplyImpulse(new b2Vec2(-player_speed, 0), player.GetWorldCenter()); 
        } 
       } 
      } 

我希望它可以幫助你......如果不是讓我知道,我有其他的方式,可以更簡單。 如果我可以回答你的任何問題,我將不勝感激。

+0

這是完美的,謝謝你的提示! :) –