1

読み込まれた Texture2D に従って、Farseer を使用して XNA でボディにアタッチするコリジョン頂点を作成したいと考えています。

まず、注意事項です。衝突以外の目的で Farseer を使用していないということです。レンダリングと他のすべてのゲーム コードは、独自のエンジンを使用して行われます。Farseer は、バックグラウンドの物理シミュレーターとしてのみ使用されます (衝突が発生した場合にのみ通知され、それを自分で処理します)。

ここで指摘しておきたいのは、私は 100% Farseer の初心者です。以前に使用したことはありません。

したがって、BayazitDecomposer.ConvexPartition(verts) を使用してリストを作成する場合、このデータを Texture2D オブジェクトと一緒に保存する必要があります。衝突可能なアクターを作成するときに、その場で List オブジェクトを作成しますか? それとも私は何か間違ったことをしていますか?

さらに、http://farseerphysics.codeplex.com/documentationの例では、頂点を Vertices.Scale() でスケーリングしています... すべての Farseer ボディをピクセル空間に保持する場合、これを行う必要がありますか?

ありがとうございました。

4

1 に答える 1

1

したがって、BayazitDecomposer.ConvexPartition(verts) を使用してリストを作成する場合、このデータを Texture2D オブジェクトと一緒に保存する必要があります。衝突可能なアクターを作成するときに、その場で List オブジェクトを作成しますか? それとも私は何か間違ったことをしていますか?

BodyFactory を使用して頂点のリストから Body クラスのインスタンスを作成します。あなたが持っている各アクターに対してこれを行うことをお勧めします。ただし、本体を再利用することで、プロセッサの処理能力をいくらか節約できます。したがって、アクターが死んだ場合は、ボディをキューに追加してから、作成された新しいアクターにスナップします。

さらに、http://farseerphysics.codeplex.com/documentationの例では、頂点を Vertices.Scale() でスケーリングしています... すべての Farseer ボディをピクセル空間に保持する場合、これを行う必要がありますか?

いいえ。ただし、これは、Farseer に関する限り、1 ピクセルが 1 メートルであることを意味します。半径 * 力の場合のトルクの式は、半径に依存するものは期待どおりに動作しないと思います。メートルを実際のゲームのメートルと同等にすることをお勧めします。余分な分割のほんの少しです。

于 2011-12-19T22:34:38.033 に答える