PlayN の Body オブジェクトに角度インパルスを適用しようとしましたが、うまくいきませんでした。どの値 (ラジアル) を入力しても、体の角度は変わりません。トルクも設定しようとしましたが、結果はありませんでした。
動作しないコード例:
BodyDef def = new BodyDef();
def.type = BodyType.DYNAMIC;
Body body = world.createBody(def);
float degToRad = (float) (180 / Math.PI);
float radials = (float) (50 / degToRad);
// None of the following options work.
body.applyAngularImpulse(radials); // Immediate angular change.
body.applyTorque(radials); // Angular change over time.
角速度を手動で設定せずに (たとえば setAngularVelocity を使用して) 有効なボディ オブジェクトの角度を変更するにはどうすればよいですか?
前もって感謝します!
setWake メソッドを呼び出すことでトルクと角速度がリセットされることに気付きました。これは手動では決して行いませんが、Island クラスによって呼び出されます。
public void setAwake(boolean flag) {
...
m_angularVelocity = 0.0f;
m_torque = 0.0f;
...
}
注:物理シミュレーションに依存しているため、角速度の設定はオプションではありません。Box2D angle rotationの記事を見つけましたが、applyAngularImpulse メソッドの結果は変わりませんでした。