0

私はシミュレーションを作成しており、現在それに障害物を追加しています.現在、障害物の目的は、他のエージェントが他のエージェントがそれらを見ることができない場所に隠れることができるようにすることです.しかし、私は、ビュー内のエージェントは障害物の後ろにあるため、見ることができませんでした.次に例を示します。

ここに画像の説明を入力

黒のエージェントは赤のエージェントを見るべきではありませんが、黄色のエージェントを見ることができるはずです (緑の線は黒のエージェントの視野を示します)。

現時点では、視野はエージェントがいる角度のみを計算し、角度が視野内にあるかどうかを確認します。ゲーム開発者が使用し、レイキャスティングについて読んでいるいくつかのソリューションを見ていましたが、計算量が非常に多いようで、何百ものエージェントがレイをキャストするので、私にとっては良い解決策ではありません.

私が考えていたもう 1 つのことは、障害物が占めるビューの角度 (例: 90 度から 120 度) をチェックすることであり、エージェントが同じ角度スパンにある場合は、エージェントが障害物によってブロックされていることを意味します (それが理にかなっている場合)。 .

私はこの種のゲーム開発関連のことは非常に初めてなので、誰かがこれに対するシンプルで効率的な解決策を教えてくれるかどうかを尋ねるためにここに投稿します。

前もって感謝します!

4

1 に答える 1

1

2D の場合は、2 本の線 (青色で表示) を作成し、線とエージェント間の距離をテストします。青い線からエージェントまでの距離は、少なくともエージェントの半径である必要があります。そうでない場合、エージェントが表示されます。また、各青い線に垂直な「法線」ベクトルを与え、それに対して点を打って線のどちら側にあるかを判断できます。3D の場合は同じことを行いますが、線の代わりに平面を使用し、2 つではなく 4 つ以上の平面が必要になります。本質的に、これは錐台カリングが行われる方法です。

ここに画像の説明を入力

于 2013-01-01T21:20:45.060 に答える