回答:
衝突の検出は必要ありませんが、敵に少し知性を与え、敵が互いに走り回らないようにする必要があります。それなしの衝突検出は、とにかくあなたの敵を愚かに見せます-人はお互いを避けます、彼らは一般に衝突しません。
いくつかの簡単な動作については、「群れ」を調べてください。
基本的な考え方は、物事はプレーヤーの方に向かうべきであるが、近くの障害物(お互い、壁、そのようなもの)から離れるべきだということです。
あなたが一般的に求めているのは、アクター間の動的な回避です。速度障害物を見ることができます:http : //gamma.cs.unc.edu/RVO/
協調的な拡散(ここでは素晴らしいアニメーション)または他の種類の動きに対する反オブジェクトパターンを確認することをお勧めします。拡散アルゴリズム自体は敵の交差を防ぐことはできませんが、追加の制約を追加して可能性を低くしたり不可能にしたりできます。
Craig ReynoldのWebサイトには、操縦および群れ行動に関するいくつかのリファレンスがあります。それらは実装が比較的簡単ですが、素敵な緊急行動を生み出すことができます。
他のすべての答えはより良い結果を生成しますが、完全なグループ化を回避する最も安い(?)方法は、元の計算された移動ベクトルのおそらく25%であるランダムベクトルを追加して、オブジェクトが一般的なブロブグループで少し跳ね返ることです。物事を完全に切り離すことはできませんが、達成しようとしているものによっては、これで十分であることがわかりました。オブジェクトを円で囲むと、オブジェクトはこの方法でグループ化できますが、時間がたつと拡散する傾向があります。
この方法を実証する数年前に作成した小さなゲームレットは次のとおりです。http://deleter.phatcode.net/index.php?page = projects& p = 4
それは非常に良い結果を与えるため、人々は常にボイドを育てますが、ボイドを実装することはあなたの特定の目的のためにやり過ぎかもしれません。過去に、小さな円内のターゲット位置を単純にランダム化することで、非常に良い結果を得ました。
たとえば、Unityで作成したデモでは、コマンドRandom.insideUnitSphereを使用して、パフボールの群れを作りました。