當用AS3和Box2D創建一個播放器時,我們可以讓玩家移動,但是我們不能讓玩家像移動到AS3一樣移動,例如x ++;而不是ApplyImpulse(新的b2Vec2(1,0),GetWorldCenter())。我們如何讓玩家更像flash一樣移動,我們也嘗試過ApplyForce和SetPosition,這些都無法正常工作!玩家很浮動或不立即響應控制,任何意見將不勝感激!AS3 Box2D Player Movement
如果有問題,請你解釋一下,而不是摔倒和離開?
當用AS3和Box2D創建一個播放器時,我們可以讓玩家移動,但是我們不能讓玩家像移動到AS3一樣移動,例如x ++;而不是ApplyImpulse(新的b2Vec2(1,0),GetWorldCenter())。我們如何讓玩家更像flash一樣移動,我們也嘗試過ApplyForce和SetPosition,這些都無法正常工作!玩家很浮動或不立即響應控制,任何意見將不勝感激!AS3 Box2D Player Movement
如果有問題,請你解釋一下,而不是摔倒和離開?
你爲什麼不嘗試使用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());
}
}
}
我希望它可以幫助你......如果不是讓我知道,我有其他的方式,可以更簡單。 如果我可以回答你的任何問題,我將不勝感激。
這是完美的,謝謝你的提示! :) –