Behavior Tree で敵AIを組んで、プレイヤーを追いかけるところまではできた。でも、その敵は プレイヤーへ一直線に突っ込むだけ 。物陰に隠れたり、回り込んだり、距離を保ったりといった「賢く見える動き」ができません。この差を生むのは、「どこへ動くか」を選ぶ力です。
その「良い位置選び」を担うのが EQS(Environment Query System) です。周囲にたくさんの候補点を撒き、テストで採点し、一番良い点を選ぶ。これで、敵は状況に応じて賢い移動先を選べるようになります。この記事では、EQSの3段の仕組みから、撃たれたら遮蔽物の裏へ隠れる敵を作るところまでを解説します。
EQSを使うには、Environment Query Editor プラグインの有効化が必要です。
この記事でわかること
- EQSとは: 候補点を生成 → テストで採点 → 一番良い点を選ぶ
- Generator で候補点を撒く(Grid / Circle)
- Test で採点する(Distance / Trace / Dot)
- EQS Testing Pawn で採点を色分き球で見る
- Behavior Treeの Run EQS Query で結果を使う
- 実践: 撃たれたら遮蔽物の裏へ隠れる敵
EQSとは何か
EQS(Environment Query System) は、「今いる環境の中で、一番良い場所はどこか」を問い合わせる仕組みです。やっていることは、 3段階 です。

- 生成(Generate): 敵の周囲に、移動先の 候補点をたくさん撒く
- 採点(Score): 各候補点を、条件(近い・見えない・正面など)で 点数付けする
- 選択(Select): 一番点数の高い点を選び、そこを移動先にする
たとえば「隠れる」なら、周囲に候補点を撒き、「プレイヤーから見えない点」を高く採点し、その中で「一番近い点」を選ぶ。すると、敵は最寄りの遮蔽物の裏を選んで走り込みます。 「どこへ動くか」を、点数で決める 。これがEQSの正体です。Behavior Treeが「何をするか(判断)」、AI Perception が「何を知覚するか」なら、EQSは「どこへ動くか(位置選び)」を担当します。
Generatorで候補点を撒く
EQSの第一歩は、 候補点を撒く ことです。これを担うのが Generator です。

よく使うGeneratorは2つです。
- Points: Grid(格子): ある範囲に、 格子状 に候補点をびっしり撒きます。「自分の周囲一帯から探す」のに向きます
- Points: Circle(円): 基準点を中心に、 円状 に候補点を撒きます。「相手の周りをぐるっと回る位置」を探すのに向きます
撒かれた候補点は、NavMesh の上に落ちます。つまり、 実際に歩いて行ける場所だけ が候補になります(壁の中や空中には撒かれません)。まずはPoints: Gridで自分の周囲に候補を撒くのが、いちばん分かりやすい出発点です。
Testで採点する
候補点を撒いたら、次は 採点 です。各点に、条件でスコアを付けるのが Test です。

代表的なテストは3つです。
- Distance(距離): 基準点からの 距離 で採点。「近いほど高得点」「遠いほど高得点」を選べます
- Trace(射線): ある点との間に 射線が通るか(Line Trace と同じ考え)。「プレイヤーから見えない点」を残すのに使います
- Dot(方向): 向きの内積。「プレイヤーの正面/背後」といった 方向 で採点します
そして、テストには2つの働き方があります。
- Score(採点): 点にスコアを加減する。良い点を「より良く」する
- Filter(足切り): 条件を満たさない点を 候補から除外 する。「見えない点だけ残す」はこれです
「見えない点だけ残して(Filter)、その中で近い点を優先する(Score)」のように、FilterとScoreを組み合わせて、狙った位置を選ばせます。
EQS Testing Pawnで可視化する
EQSは、頭の中だけで組むと必ず「なぜこの点が選ばれる?」で迷います。そこで、 採点結果を目で見て育てる のがEQSの基本 です。使うのが EQS Testing Pawn です。

やり方はこうです。
- EQSTestingPawn を親クラスにしたBlueprintを作る
- それをレベルに 配置 する
- Detailsパネルの Query Template に、作ったEnvironment Queryを指定する
すると、そのPawnの周りに 候補点が球で表示され、採点結果に応じて色分け されます。高得点の点は濃く、低得点は薄く見えるので、「狙った場所が高得点になっているか」を目で確かめられます。 緑(高得点)が遮蔽物の裏に並んでいれば、隠れるクエリは正しく組めています 。EQSは、この可視化を見ながらテストを足したり閾値を調整したりして育てていきます。
Behavior Treeから使う
クエリが組めたら、Behavior Treeから実行して、結果を使います。使うのが Run EQS Query タスクです。

流れはこうです。
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で可視化すると、 緑(高得点)の点が岩の裏に並ぶ のが見えます。

クエリの構成
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 の敵に「賢く見える動き」を足せます
おまけ:先に知っておくと良いこと
毎フレーム回さない。 EQSは候補点を撒いて全部を採点するので、それなりに重い処理です。毎フレーム実行すると負荷が高くなります。「被弾したとき」「一定間隔ごと」など、 必要なときだけ 実行するのが基本です。Behavior TreeのタスクやServiceで、間隔を空けて呼びます。
単純な追跡にEQSは要らない。 「プレイヤーへ直進する」だけなら、EQSは不要で、Behavior Tree の Move 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)が揃いました。あなたのゲームの敵に、「一直線に突っ込む」以外の、どんな賢い動きをさせたいですか。まずは周囲に候補点を撒いて、その色を眺めてみてください。
さらに学ぶために
- Behavior Treeで敵AIを作る — 実践の土台・EQSの結果を使う判断側
- AI Perceptionで敵に見つけさせる — 知覚との組み合わせ
- Line Traceでレイキャスト — Traceテストの理解の下地
- NavMeshの設定と最適化 — 候補点はNavMesh上に落ちる