3D RTSでグループ形成を実装するにはどうすればよいですか?


14

私は単一のユニットのパスファインディングの仕事を得ることができ、エージェントとエージェントの衝突を回避することができましたが、エージェントのグループをある場所に送信できるようにする必要があります。

これはこれまでの私のセットアップです:

  • ウェイポイントパスファインディング
  • 2つのノード間の最小距離は、エージェントに許可されている最大の境界球半径よりも少し大きいです。
  • エージェントは、clearpathに基づいてステアリング動作を行うことにより、他のエージェントとの衝突を回避します。

そのため、エージェントをグループ内のどこかに送る必要があります。グループリーダーを作成し、他のユニットに彼の位置にオフセットを与えることだと言っているいくつかの投稿を読みました。

しかし、問題は、グループ形成が達成できない場合はどうでしょうか?たとえば、長方形を形成したいが、ターゲットの位置に長方形のセットアップを作成できない構造が近くにあります。


2
私は仕事をしているので、適切な答えを書く時間はありませんが、ゼロポイント2セントです。ボイドフロッキングアルゴリズムを使用し、ボイドが撃退されるオブジェクトとして障害物を表します。
ネイラー

@Nailer彼が群がっているアルゴリズムは動いている限り機能しますが、それらの最終位置が「大丈夫」かどうかをどのように検出し、移動を停止できることを通知しますか?心配しないで、私はあなたの答えを待つことができます;)
xcrypt

回答:


13

実際、Gamasutraでこれに関する非常に素晴らしい記事があります。また、フォーメーションや衝突の解決などのトピックをカバーしています。

ここに画像の説明を入力してください

また、同じトピックに関する彼らの別の記事は、少し短くなっていますが、より多くの擬似コードの例があります。

ここに画像の説明を入力してください

最後に、システムを実装する際に考慮すべき重要なことは、最高司令官2がこれを使用した「フローフィールド」のアイデアです。そして、それはワシントン州立大学のクラウドフロー研究に基づいています。


おかげで、私は最高の司令官からの連続した群衆の経路探索物を見てきましたが、私は私が持っているものに固執すると思います。私は
もう少し経験を積む

2

フォーメーションのボスである目に見えない「群れのエンティティ」を持つことができ、他のクリーチャーがこのエンティティに対して自分自身を位置付けることができると思います。このエンティティが回転できる場合、相対位置も回転します。

...おっと..あなたはすでにそれをやっています。

これはどうですか:

衝突するエンティティの新しい位置を計算できないのはなぜですか?派手である必要はありません。おそらく、目的の元のポイントとリーダーから線を引いて、目的の位置をこの線の中央に移動するだけです。衝突を再度テストします。


Dトリッキーな部分は地形/障害物/構造の形成の衝突処理する方法である:私は私の質問に言っほとんどだまあ
xcrypt

申し訳ありませんが、新しいアイデアで返信を更新しました。
テイ

わかりません。オフセットベクトルの大きさを半分にして、これが衝突のない位置であるかどうかを確認し続けるでしょうか。それは多くの場合失敗する可能性が最も高い
-xcrypt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.