0

私は Box2D (具体的には jBox2D) を使用しており、テトリスのようなブロック衝突を行おうとしています (つまり、互いにオーバーラップする直前に停止して、シームレスにインターロックします)。

形状が別の形状と交差するに、「光線」に沿った最後の位置を決定する最も簡単な方法は何ですか? (つまり、他のブロックとスムーズに連動するように、ブロックが特定の方向に移動した場合に最終的にどの位置に到達するかを決定します) Box2D は一般的なレイキャスティング機能を提供しているようですが、提供されている機能を使用してこれを簡単に行う方法がわかりません。


(注: 一般に、ブロック ゲームはグリッドとしてモデル化できます。これにより、実際の 2D/3D プロパティに依存する必要がないため、衝突/目的地の検出が大幅に簡素化されます。ただし、このようなグリッドを使用することはできません。私の状況では)

4

1 に答える 1

0

OK、少なくとも私の場合は、この問題を回避する方法があると思います-レイキャストからの交差点を通常どおりに計算したら、(オブジェクトのサイズと形状に基づいて)決定できるいくつかの関数を作成しました交差 + 交差) オブジェクトが他のブロックとうまくかみ合うために「到着」する位置。したがって、基本的に同じ問題を解決しますが、レイキャスト自体で直接解決するわけではありません。うまく機能しないコーナーケースがいくつかありますが、現時点では私のプロジェクトには十分です

ただし、元の質問に対する正確な答えがあるかどうかはまだ興味があります。通常のレイキャスティングの上に、形状が交差する前に最後の「適切な」位置を決定できる方法またはバリアントはありますか?

@ iforce2d - 誤解しているかもしれませんが、Box2D が提供する情報は、交差点がどこにあり、交差点が最初からどれくらい離れているかだけですか? どちらも私が望むことを完全には行いません-2つの形状が交差しないように配置できる交差の前の最後のポイントが必要です(つまり、交差せずにできる限り接近します)

于 2011-06-13T20:46:57.410 に答える