フラッシュセールライセンス 30% オフ、同じ価格で増量トークンパック。ライセンス 30% オフ + 増量トークンパック終了まで …料金を見る → V2 の新機能を見る · 刷新されたインターフェース、Crew、Blueprint から C++ への変換、マルチプレイヤーのプレイテスト、エディター内アップデート 変更履歴を読む →
すべての記事
6 分で読めます

Unreal Engine のステルス検知:AI で視界の円錐つきの見張り番を作る

Unreal Engine でステルス検知を作る方法。120 度で首を振る見張り番、半角 45 度で射程 1500 の視界の円錐、視線チェック、赤いランプと Spotted! の表示を AI が作成。

Unreal Engine のステルス見張り番は、3 つの小さな要素でできています。回転する頭部、1 秒に何度も繰り返す「プレイヤーが見えるか」という問い、そしてランプとテキストによる反応です。この問いの答えには、2 つの条件が必要です。プレイヤーが角度の内側にいること、そして間に何も遮るものがないことです。いちばん簡単な作り方は、視界の円錐、視線のチェック、警戒状態を含むシステム全体を、1 回の依頼で AI に作らせることです。

このチュートリアルでは、Ultimate Engine CoPilot が、左右に首を振り、プレイヤーが円錐に入るとランプを赤にして「Spotted!」と表示する見張り番を作ります。実際に使ったプロンプト、AI が見つけて直した配置の問題、そして視界の円錐の仕組みのやさしい解説をお届けします。

完成した見張り番の動き

上にランプを載せた背の高い柱が、ゆっくり左右に首を振っています。柱の後ろに立っているあいだ、ランプは緑のままです。あなたは見えていません。次に、柱の前の淡い光の円錐の中に入ると、ランプが赤に変わり、画面の上部に赤い文字で「Spotted!」と表示されます。円錐の外に出ると、少ししてランプは緑に戻り、文字も消えます。

見張り番の視界の中、雪の上に立つプレイヤーと、画面の上部に表示された赤い Spotted! の文字

プレイヤーは円錐の中にいて、文字には Spotted! と表示されています。

プロンプト

これをコピーして、角度や射程を変えながら、AI が何を作るか試してみてください。

Make a stealth sentry. Create BP_Sentry in /Game/Series/EP42_Sentry, a tall pillar with a lamp on top that slowly turns left and right through 120 degrees, with a vision cone of 45 degrees half-angle and 1500 units range drawn as a pale cone of light. The lamp is green while nothing is seen. When the player is inside the cone and in line of sight, the lamp turns red and the text Spotted! shows in the top centre below the existing Blizzard box; when the player leaves the cone, the lamp goes back to green after 1 second and the text is removed. Keep the range, the angle and the turn speed as variables. Place one sentry near the player start facing the open snow. Then play test it: check the lamp is green with the player behind it, teleport the player into the cone and check the lamp is red and the text shows, teleport the player out and check it returns to green, and fix anything that does not work.

数値に注目してください。120 度、45 度、1500 ユニット、1 秒です。そして「in line of sight」(視線が通っていること)という言葉にも注目してください。これは、壁が視界を遮るべきだと AI に伝えています。壁越しに見える見張り番では、ステルスゲームになりません。

AI はどう作るのか

AI はプロジェクトと HUD を読み込んでから、見張り番を作ります。柱、ランプの頭部、2 つのマテリアル(ランプ用と半透明の円錐用)、そして地面を照らす、同じ角度と射程のスポットライトです。続いてロジックを作ります。頭部は回転速度に従って回り、視界のチェックは毎 Tick 実行され、プレイヤーが離れたあとも 1 秒のタイマーで少しのあいだ赤を保つので、ランプがちらつきません。

円錐は飾りではありません。実際の視界の射程と角度と同じ大きさなので、見えている範囲が、そのまま見張り番に見えている範囲です。

首振り、視界のチェック、反応を持つ BP_Sentry のイベントグラフ

見張り番のグラフ:頭部が回り、視界のチェックが毎 Tick 実行され、ランプとテキストが反応します。

配置の問題

検知のロジックは動きますが、最初の配置はプレイヤースタートと同じ向きで、遺跡のほうを向いていて、270 ユニット先にある遺跡の柱が視界を遮っていました。見張り番はプレイヤーを一度も見つけられません。AI は地形を調べ、東に開けた雪原を見つけて、見張り番をそこへ移動します。Blueprint のロジックは変更不要でした。そのうえで、すべてのケースが合格しました。

レポート

チェック、修正した内容、注意点を載せた AI のレポート

チェック、配置の修正、注意点。

レポートには、すべてのチェックをまとめた表があります。

  • 見張り番の後ろ:見つからず、緑のまま。頭部は 1 秒で約 21 度回転します。
  • 見張り番の前:1 秒以内に見つかり、ランプは赤になり、Blizzard のボックスの下に文字が表示されます。
  • 離れたあと:0.5 秒間はまだ赤で、1 秒後に緑に戻り、文字は消えます。
  • 見張り番とプレイヤーの間に柱を置くと検知が遮られ、柱を取り除くと検知が戻ります。

AI は、行わなかったことについても正直です。

  • 円錐内のチェックでは、首振りを中央で止めていたため、テレポート先の位置が同じなら毎回同じ結果になりました。頭部が首振りの途中にあるときの検知は、別にはテストされていません。
  • ランプの色は、ライトの値から読み取ったもので、目視では確認されていません。
  • メインメニューのオーバーレイが、スクリーンショットの一部を覆っていました。

また、テキストとランプのどちらも、プレイヤーが離れた瞬間ではなく、1 秒の遅延のあとで消えることも書かれています。さらに、円錐はランプから水平に向いていて、ランプは 430 ユニットの高さにあるため、柱から約 350 ユニットより近くに立つプレイヤーは円錐の真下に入り、見つかりません。

視界の円錐のしくみをやさしく解説

見張り番は毎 Tick、2 つのものを比べます。頭部が向いている方向と、プレイヤーへの方向です。その 2 つの間の角度が半角の 45 度より小さく、距離が射程より短ければ、プレイヤーは円錐の中にいます。次に、ランプからプレイヤーに向けてラインをトレースします。そのラインが先に壁や柱など別のものに当たれば、プレイヤーは隠れています。

プレイヤーが見えていれば、ランプが赤になり、文字が表示されます。見えていなければ、1 秒のタイマーが動き、そのあとランプが緑に戻って文字が消えます。この遅延があるから、見張り番が公平に感じられます。射程、角度、回転速度、遅延は変数なので、4 つの数値を変えるだけで、怠け者の見張りにも、とても警戒心の強い見張りにもできます。

拡張のアイデア

  • 見張り番が怪しんでいるが、まだプレイヤーを見ていないときの 3 色目、黄色。
  • プレイヤーを見つけると追いかけてくる見張り番。
  • 警報音と、それを聞いて目を覚ます、ほかの見張り番。

見張り番プロンプトの 4 つのコツ

  1. 角度、射程、回転速度を数値で指定する。
  2. 「in line of sight」と書いて、壁が視界を遮るようにする。
  3. プレイヤーが離れたときに何が起きるか、何秒後かを書く。
  4. 円錐の後ろ、内側、外側からテストするよう AI に頼む。

よくある質問

Unreal Engine 5 で視界の円錐を作るにはどうすればよいですか?

見張り番の向いている方向とプレイヤーへの方向の間の角度を半角と比べ、距離を射程と比べます。そのうえで、ラインをトレースして、視界を遮るものがないことを確認します。

見張り番にライントレースが必要なのはなぜですか?

角度と距離だけでは、プレイヤーが前方にいることしか分かりません。ランプからプレイヤーへのトレースで、間に壁や柱がないことを確認できます。

見張り番が最初にプレイヤーを一度も見つけられなかったのはなぜですか?

最初の配置では、270 ユニット先の遺跡の柱のほうを向いていて、視線が遮られていました。AI は見張り番を開けた雪原に移動し、ロジックは変更不要でした。

プロジェクトで試してみましょう

Ultimate Engine CoPilot で何が作れるかは 製品ページ でご覧いただけます。入手は Fab からどうぞ。AI Blueprint ジェネレーター のしくみもご覧ください。

このシリーズの他の作例: Unreal Engine スパイクトラップ、Unreal Engine 2 つの鍵のドア、Unreal Engine ポータルテレポーター。

どう思いましたか?

エディタで試してみよう
Unreal Engine 5 向けの 1,655 のツール。
プラグインを入手