2016-05-23 4 views
0

私はMonoGameでFarseer Physicsライブラリを使用しています。Box2D Farseer物理学の中心と原点が一致しない

私のゲームでは、BodyFactory.CreateCompoundPolygon(...);で作成した複合ポリゴン体を使用していますが、問題があります。

元は、ほとんどのBox2dオブジェクトのように重心ではなく、左上隅にあります。私は、左上とは別のピボット点を中心にして身体を回転させる必要があるため、身体の重心(Body.LocalCenter)を変更できることがわかりました。これは結構な作品、と私はBody.ApplyAngularImpulse(...);を使って体を回転させたりBody.AngularVelocityを変更することでできますが、ここで問題が来る:私は罰金作品の前に述べた方法を使用して体の回転を変更する

、および使用されるピボットポイントは、重心ですが、回転を直接変更して回転させようとすると(Body.Rotation)、質量中心ではなく左上隅を中心に回転します。 だから実際には、Body.Rotation += 1;は、私はちょうど体を回転させるために、私は前に述べた方法を使用していない、なぜあなたは、これが問題である理由を不思議に思われるかもしれませんBody.AngularVelocity = 1;

とは異なるピボットポイントを中心に回転します。問題は、体の現在の回転を確認できることです。私はこれを行う方法を理解することはできません。私はBody.Rotationを使用することができません。間違った点を中心に回転を返します。

TL; DR:Body.Rotationは重心を中心に回転を戻さないが、これと戦う方法は?

答えて

1

複合ポリゴンを中心点のリストから作成する場合、ピボットとマス中心を正しく設定できます。

20単位の正方形については、[0,0] [20,0] [20,20] [ - 20,20] の代わりに を使用します。[-10、-10] [10、 10] [10,10] [ - 10,10]

関連する問題