Farseerを使用した物理のタイリング


9

Farseer Physics Engineに問題があります。タイル化された環境では、オブジェクトが他のオブジェクトのコーナーと完全に位置合わせされていても、ときどき相互作用することがあります。

Farseerを使用した物理のタイリング

私は、マーチングスクエアなどを使用して、1つの大きなオブジェクトを計算して作成することを提案している人々について読みました。ただし、摩擦や反発力の違いなど、各タイルに異なる物理的品質を持たせたいので、これはオプションではありません。

私の質問は、正確にそれを引き起こしているのは何ですか、それは浮動小数点精度の問題か何かですか?そして、物理エンジン全体を壊さずにそれを修正する方法はありますか?


コリジョンボックスを1ピクセルだけ拡大して、少しオーバーラップできるかどうかを考えます。それはおそらく表面がより接続されているように見えるかもしれません。
Doug.McFarlane 2011

@Doug:私はそれをテストしたばかりで、何の違いもありませんでした。
ウィリアム・マリアガー2011

グラウンドタイルは静的なボディですか?
bummzack、2011

@bummzack:はい、そうです。
ウィリアム・マリアガー

私はまったく同じ問題を抱えています。可動オブジェクトが長方形または円の場合、「跳ねる」効果が得られます。また、特定の状況で個々のタイルを「削除」する機能をプレーヤーに持たせたいため、複数の正方形を1つの大きな長方形に変換することもできません。

回答:


5

Farseerは反復ソルバーを使用しているため、ホイールが別の四角形と高速で衝突し始めると、物理シミュレーションではなく、「完全な位置合わせ」であるバンプが時々表示されます。 「ピクセルパーフェクト」になることはありません。

長方形をエッジ/ループ形状に変換し、人工タイル境界を作成し、キャラクターが境界ボックスに入ったときにプロパティを変更するなどのハックでさまざまな物理的品質をモデル化する必要がありますが、すべての物理的品質をそのようにエミュレートできるわけではありません。

遅かれ早かれ、Farseerではなく、独自のタイルベースの物理学を作成することになります。ゲームに複雑な物理パズルがたくさんない場合は、Farseerを完全に放棄して、タイルベースの物理を転がす方が簡単です。


エレガントなソリューションがないように見えるので、私は実際に、特にこのタイリングエンジン用に、自分の物理エンジンのコーディングを開始しました。
ウィリアムマリアーガー、2011

簡単な解決策はないようで、独自の解決策をコーディングする方がよいので、私はこれを答えにマークすることにしました。または、異なる物理を使用できないことを受け入れ、マーチングスクエアを使用してより大きなボディを作成します。
ウィリアムマリアガー、2011

0

衝突の形状を最適化できます。このシーンは4つの長方形だけで実行できます。

相関ボックスを結合して1つ大きくすることができます。

このビデオはそれを示していますhttp://www.youtube.com/watch?v=eyhGckHgkkE

ボックスを追加すると、最適化された形状の水色の長方形が表示されます。


1
3番目の段落で述べたように、個々のプロパティが失われるため、オブジェクトのグループをより大きなオブジェクトに変換することはできません。
ウィリアム・マリアガー2011

それらをそれらの物理的特性によってグループ化することもできます。たくさんの異なる物理ブロックを一緒にすることは、あまり一般的ではないと思います。
ブラウ

それらを物理的な特性でグループ化すると、地形が一気に大きく変化する場合、同じ問題が発生します。珍しいかもしれませんが、それでも私が必要とするものです。
ウィリアム・マリアガー2011

0

うーん...それはあなたのサークルと関係があり、その下のタイルではないかもしれないと思います。単一の船体を使用して地面を作成してみて、同じ結果が得られるかどうかを確認してください。そうでなければ、それはあなたが疑うようなタイルです。もしそうなら、あなたのサークルはあなたが思っているほど丸くないです。


私はそれをテストしました。1つの大きな長方形を使用しても問題はありません。
ウィリアム・マリアガー2011

k、タイルが問題です
ジョンマクドナルド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.