2013-03-27 52 views
0

我正在做android遊戲,使用box2d物理,我有車輛,車輪使用WheelJoints連接到主車身。現在我正在尋找加快這些車輛,同時也限制了他們的速度一定值取之有道,目前我與這樣做:Box2d - 加速和限制車輪的速度

public void accelerate(int direction) 
{ 
    if (Math.abs(wheel1.getAngularVelocity()) < maxSpeed) 
    { 
     wheel1.applyAngularImpulse(accelerateRatio * direction); 
     wheel1.applyAngularImpulse(accelerateRatio * direction); 
    } 
} 

其中:

  • WHEEL1wheel2是我的車輪車身。
  • int方向是我們想要加速的方向(1右,-1左)
  • accelerationRatio - 加速度的比例,例如10。
  • MAXSPEED - 車輛的最大速度,如12等

我不認爲它是一個完美的解決方案,尤其是因爲它有惱人的錯誤,而可以說加速的權利,而且比加速離開,車輛有首先減速,因爲有最大速度檢查。

回答

1

如果有方法檢查車輪正在旋轉的當前方向,那麼只有在您嘗試加速時才應檢查它是否爲最大速度。正如你所說,現在你檢查最大速度,如果你正在加速和減速。

0

您可以根據當前速度和所需速度調整accelerateRatio

accelerateRatio = k * (float) Math.abs((
       getDesiredAngularVelocity() - wheel.getAngularVelocity()); 

這樣,你得到更大的減速如果需要速度沿相反的方向,它可以幫助你更快地停止。