【Unreal Engine】EQS入門:敵に「良い位置」を選ばせる

作成: 2026-07-23

敵に「どこへ動くか」を賢く選ばせるEQS(Environment Query System)の入門。候補点を生成→テストで採点→一番良い点を選ぶ3段の仕組み、Points:GridやCircleで候補を撒くGenerator、Distance・Trace・Dotのテスト、EQS Testing Pawnで採点結果を色分き球で見る方法、Behavior TreeのRun EQS Queryタスクで結果を使う手順まで。撃たれたら遮蔽物の裏へ隠れる敵を作ります。

Behavior Tree で敵AIを組んで、プレイヤーを追いかけるところまではできた。でも、その敵は プレイヤーへ一直線に突っ込むだけ 。物陰に隠れたり、回り込んだり、距離を保ったりといった「賢く見える動き」ができません。この差を生むのは、「どこへ動くか」を選ぶ力です。

その「良い位置選び」を担うのが EQS(Environment Query System) です。周囲にたくさんの候補点を撒き、テストで採点し、一番良い点を選ぶ。これで、敵は状況に応じて賢い移動先を選べるようになります。この記事では、EQSの3段の仕組みから、撃たれたら遮蔽物の裏へ隠れる敵を作るところまでを解説します。

EQSを使うには、Environment Query Editor プラグインの有効化が必要です。

敵が周囲の候補点から遮蔽物の裏の点を選んで隠れるEQSのイメージとソフトブルーのクレイ人形

この記事でわかること

  • EQSとは: 候補点を生成 → テストで採点 → 一番良い点を選ぶ
  • Generator で候補点を撒く(Grid / Circle)
  • Test で採点する(Distance / Trace / Dot)
  • EQS Testing Pawn で採点を色分き球で見る
  • Behavior Treeの Run EQS Query で結果を使う
  • 実践: 撃たれたら遮蔽物の裏へ隠れる敵

Sponsored

EQSとは何か

EQS(Environment Query System) は、「今いる環境の中で、一番良い場所はどこか」を問い合わせる仕組みです。やっていることは、 3段階 です。

候補点を生成し、テストで採点し、一番点の高い点を選ぶ、というEQSの3段の流れを示した図
  1. 生成(Generate): 敵の周囲に、移動先の 候補点をたくさん撒く
  2. 採点(Score): 各候補点を、条件(近い・見えない・正面など)で 点数付けする
  3. 選択(Select): 一番点数の高い点を選び、そこを移動先にする

たとえば「隠れる」なら、周囲に候補点を撒き、「プレイヤーから見えない点」を高く採点し、その中で「一番近い点」を選ぶ。すると、敵は最寄りの遮蔽物の裏を選んで走り込みます。 「どこへ動くか」を、点数で決める 。これがEQSの正体です。Behavior Treeが「何をするか(判断)」、AI Perception が「何を知覚するか」なら、EQSは「どこへ動くか(位置選び)」を担当します。

Generatorで候補点を撒く

EQSの第一歩は、 候補点を撒く ことです。これを担うのが Generator です。

Points: Gridで格子状に、Points: Circleで円状に候補点を撒く2種類のGeneratorを示した図

よく使うGeneratorは2つです。

  • Points: Grid(格子): ある範囲に、 格子状 に候補点をびっしり撒きます。「自分の周囲一帯から探す」のに向きます
  • Points: Circle(円): 基準点を中心に、 円状 に候補点を撒きます。「相手の周りをぐるっと回る位置」を探すのに向きます

撒かれた候補点は、NavMesh の上に落ちます。つまり、 実際に歩いて行ける場所だけ が候補になります(壁の中や空中には撒かれません)。まずはPoints: Gridで自分の周囲に候補を撒くのが、いちばん分かりやすい出発点です。

Testで採点する

候補点を撒いたら、次は 採点 です。各点に、条件でスコアを付けるのが Test です。

Distance(距離)・Trace(射線)・Dot(方向)の3つのテストと、Score(採点)とFilter(足切り)の違いを示した図

代表的なテストは3つです。

  • Distance(距離): 基準点からの 距離 で採点。「近いほど高得点」「遠いほど高得点」を選べます
  • Trace(射線): ある点との間に 射線が通るかLine Trace と同じ考え)。「プレイヤーから見えない点」を残すのに使います
  • Dot(方向): 向きの内積。「プレイヤーの正面/背後」といった 方向 で採点します

そして、テストには2つの働き方があります。

  • Score(採点): 点にスコアを加減する。良い点を「より良く」する
  • Filter(足切り): 条件を満たさない点を 候補から除外 する。「見えない点だけ残す」はこれです

「見えない点だけ残して(Filter)、その中で近い点を優先する(Score)」のように、FilterとScoreを組み合わせて、狙った位置を選ばせます。

Sponsored

EQS Testing Pawnで可視化する

EQSは、頭の中だけで組むと必ず「なぜこの点が選ばれる?」で迷います。そこで、 採点結果を目で見て育てる のがEQSの基本です。使うのが EQS Testing Pawn です。

EQS Testing Pawnを配置すると、候補点が採点結果に応じて色分けされた球で表示され、高得点が濃く見える様子を示した図

やり方はこうです。

  1. EQSTestingPawn を親クラスにしたBlueprintを作る
  2. それをレベルに 配置 する
  3. Detailsパネルの Query Template に、作ったEnvironment Queryを指定する

すると、そのPawnの周りに 候補点が球で表示され、採点結果に応じて色分け されます。高得点の点は濃く、低得点は薄く見えるので、「狙った場所が高得点になっているか」を目で確かめられます。 緑(高得点)が遮蔽物の裏に並んでいれば、隠れるクエリは正しく組めています 。EQSは、この可視化を見ながらテストを足したり閾値を調整したりして育てていきます。

Behavior Treeから使う

クエリが組めたら、Behavior Treeから実行して、結果を使います。使うのが Run EQS Query タスクです。

Behavior TreeのRun EQS Queryタスクが、選ばれた点をBlackboardのVectorキーに書き込み、Move Toがそこへ動く流れを示した図

流れはこうです。

Behavior Tree
Run EQS Query(Query Template: EQ_HideSpot)
  → 選ばれた点を Blackboard の Vector キーに書き込む
Move To(Blackboard Key: その Vector)
  → 書き込まれた位置へ移動する

Run EQS Query タスクは、EQSを実行して、 一番良い点をBlackboardに書き込みます (位置ならVectorキー、Actorが対象ならObjectキー)。あとは、いつもの Move To でそのキーへ移動させれば、敵はEQSが選んだ「良い位置」へ動きます。Behavior Treeが判断の骨格、EQSがその中の「位置選び」を担当する、という分担です。

実践:遮蔽物の裏へ隠れる敵を作る

カバーシューターの敵兵、ステルスの警備員、サバイバルの臆病な動物。 「撃たれたら物陰へ隠れる」 は、敵が賢く見える定番の動きです。ここではその一周を、Behavior Tree記事 の見張りを流用して、EQSで組みます。

作るのは、 被弾したら、自分の周囲の候補点から「プレイヤーから見えない点」を選んで、最寄りの遮蔽物の裏へ走り込む 敵です。

動かすとこうなります。敵を撃った瞬間、敵が最寄りの岩の裏へ走り込む。岩の配置を変えても、隠れ先が自動で変わります。そして、同じクエリをEQS Testing Pawnで可視化すると、 緑(高得点)の点が岩の裏に並ぶ のが見えます。

撃たれた敵が最寄りの岩の裏へ走り込み、EQS Testing Pawnの可視化で緑の点が岩の裏に並ぶ様子を示した実例図

クエリの構成

EQ_HideSpot というEnvironment Queryを、次のように組みます。

段階ノード役割
生成Points: Grid自分(Querier)の周囲に候補点を撒く
足切りTrace(Filter, Context: Player)プレイヤーから 見える点を除外 する
採点Distance(Score, 近いほど高得点)残った点のうち 近い点を優先 する

Behavior Treeへの追加

被弾をトリガーに、隠れる枝を足します。

(被弾したら)Run EQS Query(EQ_HideSpot)
  → HideLocation(Vector)に書き込む
  → Move To(HideLocation)

確かめる

Playして敵を撃ってください。うまくいけば、 敵が最寄りの岩の裏へ走り込んで隠れます 。岩を動かすと隠れ先も変わります。EQS Testing Pawnを置いて可視化し、緑の点が岩の裏に並べば、クエリは正しく組めています。

うまくいかないときの切り分けです。

  • 敵が隠れない・変な所へ走るTraceテストのContext設定 を確認。「プレイヤーから見えない点」を残すなら、Contextは Player 。Querier(自分)のままだと基準がずれます
  • 候補点が出ない → Points: Gridの範囲や、NavMesh が敷かれているか。候補点はNavMesh上にしか落ちません
  • どの点が選ばれるか分からない → EQS Testing Pawnで可視化。色を見れば採点の意図が分かります

ポイントは2つです。

  • 可視化して育てる: EQSは、EQS Testing Pawnで採点を見ながら組むのが鉄則です。緑が狙った場所に並ぶかを目で確かめれば、テストの過不足がすぐ分かります
  • BTが判断、EQSが位置: Behavior Treeが「隠れると決める」判断を、EQSが「どこに隠れるか」の位置選びを担当します。この分担で、Behavior Tree の敵に「賢く見える動き」を足せます
Sponsored

おまけ:先に知っておくと良いこと

毎フレーム回さない。 EQSは候補点を撒いて全部を採点するので、それなりに重い処理です。毎フレーム実行すると負荷が高くなります。「被弾したとき」「一定間隔ごと」など、 必要なときだけ 実行するのが基本です。Behavior TreeのタスクやServiceで、間隔を空けて呼びます。

単純な追跡にEQSは要らない。 「プレイヤーへ直進する」だけなら、EQSは不要で、Behavior TreeMove To で十分です。EQSが活きるのは、「複数の候補から賢く選ぶ」場面(隠れる・回り込む・距離を保つ)です。単純な動きにまでEQSを使うと、無駄に重くなります。

Contextが位置選びの要。 EQSでいちばんつまずくのがContext(基準点)です。「誰から見えないか」「誰に近いか」の基準を、Querier(自分)とPlayer(相手)で正しく指定できると、狙った位置選びが組めます。可視化しながら、Contextを1つずつ確かめてください。

まとめ

敵に良い位置を選ばせるEQSは、次の流れで組みます。

段階やることノード
生成候補点を撒くPoints: Grid / Circle
採点条件で点数化Distance / Trace / Dot
可視化採点を目で見るEQS Testing Pawn
実行結果を移動に使うRun EQS Query(BT)

そして貫く原則が、 可視化して育てる ということです。緑(高得点)が狙った場所に並ぶかを目で確かめながら組めば、EQSは怖くありません。

これで、AI三部作(判断=BT・知覚=Perception・位置選び=EQS)が揃いました。あなたのゲームの敵に、「一直線に突っ込む」以外の、どんな賢い動きをさせたいですか。まずは周囲に候補点を撒いて、その色を眺めてみてください。

さらに学ぶために