2017-04-15 78 views
0

我想弄清楚如何正確使用body.applytorque(float torque, boolean wake)方法在一個質心的身體,以加速它的角速度。我想應用角度加速度,以每平方秒的度數。
根據libGDX文檔,torque參數使用牛頓米。要設置它,我將使用公式:對身體使用applyTorque()度/秒² - Box2D

= I α 
where :torque[N-m], I:mass moment of inertia, α:acceleration 

// java 
float acceleration = 120f; // deg/s² 
float inertia = body.getInertia(); 
body.applyTorque(inertia * (float)Math.toRadians(acceleration), true); 

但是這會導致錯誤的加速,同樣的事情與質量。

以deg /s²表示該方法的正確用法是什麼?

+0

度每秒是角速度,而不是角力(力矩)。你是否想讓質量以恆定的角速度旋轉?您希望將其加速到該角速度的速度有多快? –

+0

@DavidJeske [編輯:「度/每平方秒」] 質量應該以恆定的加速度旋轉。費率爲120deg /s²。 (不需要最終的恆定角速度)。 – Dave

+0

請澄清你想要解決的問題。你是否試圖旋轉身體,如同將它轉向一個新的角度位置?還是你想改變身體的旋轉速度?你的頭銜暗示後者給我,而你的第一句話暗示了前者。 –

回答

0

解決方案:問題來自我正在使用的世界編輯器UI - Overlap2D。

如何更正:在施加扭矩(...)下將扭矩乘以2。

我提到的方法在上面的示例中正確使用,公式也是如此。
藉助Overlap2D軟件,我可以將所需的所有物體放入場景中。當我在程序中加載機構和資產時,我直接將世界加載。我使用ashley提供的一些便利類,例如IteratingSystem,直接計算每個實體在每個渲染時的行爲。這個過程正在影響力量,或者至少是力矩。不過,我沒有角度衝動的問題。

感謝David Jeske和Louis Langholtz指導了我。