2012-12-30 8 views
5

私はシミュレーションゲームを開発していますし、私はthings.Iは、次のような状況を持って達成するための開発技術をゲームするのは非常に新しいです:AIエージェントの動き - ピッキングの移動角度

enter image description here

が赤いことに注意してください矢印は、AIエージェントが移動している方向です。

ここで、衝突が起こらない場合のAIランダム移動を可能にする最良の方法を理解しようとしています(次の移動が衝突するかどうかを確認していますエリア内のエージェントとエージェントサイズの半径に基づいて、私はそれに応じてどのように移動角度を変更する必要がありますかどうか、つまり、衝突が発生する場合はどうすればよいかわかりません)。実際の問題は、他のエージェントとの衝突を避け、ランダムな動き。例えばについて

:黄色剤によって囲ま黒のエージェントが存在する画像に見られるように、どのエージェントが黄色剤の邪魔にそれを移動し、衝突を回避する次の角度を選ぶことができました。

私はthis.Helpを実装する方法についての提案をお待ちしております、事前に感謝しています!

注記エージェントは、速度ベクトルを使用して、移動角度と速度定数から計算された位置を更新します。

答えて

2

私はそれにどのようにアプローチするか、あなたに考えを与えることができます。

まず、エージェントの方向をラジアンで表された角度を選択して選択することを考えることができます。したがって、値は0(インクルード)と2 * Pi(除外)の間にあります。つまり、丸み全体です。 他のエージェントの方向を計算できるようになりました(与えられたxよりも遠くないエージェントについてのみ気をつけてください - 座標に基づいて計算しやすい)。問題のエージェントのリストを取得したら、元のエージェントとの関係でそれぞれの角度を把握することができます。次に、使用可能なサークルの領域を「ブラックアウト」することができます。それをすべてのエージェントに対して繰り返す場合。あなたのサークルは、今のようなものを見て:

を---- XXXX XXXX --- ---- XXX ----- XXXはその意志の領域(ものを黒く塗りつぶしに対応

おそらく衝突する)、残りのものは安全な領域に対応する。今では、ランダムに安全なエリアを選択し、対応する角度をラジアンで取得し、エージェントを移動することができます。 これは実際には面白い問題です。エージェントの現在の方向性を考慮すると、最も安全な方向を選択させ、スムーズな回避操作を行うことができます。 :)

+0

これは非常にきれいなアイデアです!ありがとう、それはtommorowの実装に行くだろう。 – Tohmas

+0

幸運にも、角度の計算に問題がある場合は、1)dx> 0、dy> 0、2)dx> 0、dy <0などのように円の四半期ごとに処理してみてください。 –

+0

エージェントが移動できるすべての角度を保存する方法を理解しようとしています。 – Tohmas

関連する問題