Box2D を使い始めたばかりで、奇妙な問題に遭遇しました。
オブジェクトの位置を定義済みの領域内に制限する簡単な機能があります。
これを行うには、ボディのワールド ポジションを取得し、定義済み領域のバウンディング ボックスの値と照合して、ボディに力を加えて保持します。
if (bodyWorldPos.x >= worldWidth)
body.setLinearVelocity(...);
これはうまくいきます。
ただし、物体が別の物体と衝突すると、この単純な方法は機能しなくなります。次のように取得されたボディのワールド位置:
body.getWorldPoint(body.getPosition())
間違った値を返します。
これは Box2D for LibGDX のバグですか、それとも何か間違っていますか?