Unreal Engine のファストトラベル:AI で画面フェード付きのワープを作る
Unreal Engine でファストトラベルを作る方法。F キーで画面が暗転し、3 か所の次の地点へ移動して地名を表示。AI が 1 回の依頼で作成し、バグも自分で修正します。
Unreal Engine のファストトラベルは、3 つの小さな要素でできています。地点のリスト、プレイヤーを次の地点へ移動させる処理、そして移動の瞬間をプレイヤーに見せないためのフェードです。このフェードがあるからこそ、自然な感触になります。フェードがないと、プレイヤーはある場所から別の場所へ、ただ瞬間移動するだけになってしまいます。いちばん簡単な作り方は、システム全体を 1 回の依頼で AI に作らせることです。
このチュートリアルでは、Ultimate Engine CoPilot が、F キーで画面が黒くフェードし、プレイヤーを移動させて地名を表示するファストトラベルを作ります。実際に使ったプロンプト、フェードの途中のスクリーンショットを見て AI が見つけたバグ、そしてフェード付きファストトラベルの仕組みのやさしい解説をお届けします。
完成したシステムの動き
雪の中に立って、F キーを押します。画面が黒くフェードし、明るさが戻ると、遠く離れた別の場所にいて、小さな文字「East Camp」が表示されます。もう一度 F キーを押すと、「North Ridge」に到着します。さらにもう一度押すと、スタート地点に戻ります。

スタート:3 つの地点と 1 つのキー。
プロンプト
これをコピーして、距離を変えたり 4 つ目の地点を加えたりしながら、AI が何を作るか試してみてください。
Make a fast travel with a screen fade. Create BP_FastTravel in /Game/Series/EP36_FastTravel, an actor that I place once in the level, that listens for the F key. Pressing F teleports the player to one of three stored locations in order, each press going to the next one and wrapping around: the player start, a point 1500 units east of it, and a point 1500 units north of it, each placed 100 units above the snow so the player lands safely. The teleport is hidden by a fade: a black full-screen widget called WBP_ScreenFade fades in over 0.4 seconds, the player is moved while the screen is black, then the black fades out over 0.4 seconds. Also show the name of the place in the top centre below the existing Blizzard box for 2 seconds after arriving: Start, East Camp and North Ridge. Ignore a press while a transition is already running. Keep the fade time and the three location offsets as variables. Place the actor near the player start. Then play test it: press F and check the player ends at the East point, check the screen was black in the middle, press F again for the North point, press F a third time to return to the start, check the place name each time, and fix anything that does not work.
重要な文が 2 つあります。「each placed 100 units above the snow so the player lands safely」(どの地点も、プレイヤーが安全に着地できるよう雪の 100 ユニット上に置く)と、「Ignore a press while a transition is already running」(移動の最中に押されたキーは無視する)です。どちらも、うまくいかなくなりやすい場面に関する指示です。地面の中に着地したプレイヤーは動けなくなり、キーを素早く 5 回押したプレイヤーは、一連の流れを壊すことがあります。壊れ方が思いつくなら、そのときどう動くべきかを書いておきましょう。
AI はどう作るのか
AI はまずプロジェクトと HUD を読み込み、地名を Blizzard のボックスの下に置けるようにします。するとアセットが現れます。ファストトラベルの Blueprint と、画面フェード用のウィジェットです。
ここで AI は小さな制約に突き当たります。この環境では、リストを持つ変数にデフォルト値を設定できないのです。そこで AI は、リストを 3 つの単純なオフセット変数に置き換え、地点ごとに 1 つずつ持たせます。これらはプレイヤースタートからのオフセットで、ゲーム開始時に読み取られます。

ファストトラベルのグラフ:キーを押すたびに、1 つの一連の流れが実行されます。
プレイテスト
- F キーを押す:プレイヤーは、スタートから 1500 ユニット進んだ East の地点に着きます。
- 途中で画面が真っ黒になる:フェードの値は 1 で、スクリーンショットには、真っ黒な画面の上に「East Camp」の名前が表示されています。
- 移動中に押した 2 回目の F キーは無視されます。プレイヤーは North に飛ばず、East にとどまります。
- もう一度 F キー:North に移動します。3 回目に押すと、プレイヤーは出現した場所にぴったり戻ります。
見ないと分からないバグ
フェードの途中で撮ったスクリーンショットには、右端と下端に黒くない帯が写っていました。黒い画像が 1820 × 1050 で、画面全体を覆っていなかったのです。AI はサイズを 1920 × 1080 に直してテストをやり直し、新しいスクリーンショットは端から端まで真っ黒になりました。
レポート

動作のしかたと、注意すべき点。
レポートは一連の流れを説明しています。フェード時間をかけて黒くなり、移動し、少しのあいだ黒を保ち、そしてフェードアウトします。移動のたびに、目的地で下向きにトレースして地面を見つけ、その 100 ユニット上にプレイヤーを置きます。注意すべき点も書かれています。
- 黒を保つ 0.15 秒の間は、移動が半分フェードした途中のフレームに映らないよう、AI が自分で加えたものです。変数 BlackHoldTime になっています。
- East は Y 軸、North は X 軸に設定されています。マップが回転している場合は、値を入れ替えてください。
- テストで画面上に確認できたのは、East Camp だけです。
- F キーを 1 回押した後、HUD の Bolts カウンターが 10 から 9 に減りました。F キーは氷のボルトも発射する可能性がありますが、AI はそれを確認していません。
ファストトラベルのしくみをやさしく解説
F キーが押されると、アクターはまず 1 つだけ確認します。すでに移動の最中ではないか、です。移動中なら、そのキー入力を無視します。そうでなければ、一連の流れを開始します。黒いウィジェットがフェード時間をかけてフェードインします。完全に黒くなったら、アクターは次の地点を選び、下向きにトレースして地面を見つけます。次に、その地点の 100 ユニット上にプレイヤーを移動させ、少し待ってから、黒をフェードアウトさせます。そのあと、地名を 2 秒間表示し、地点の番号に 1 を足します。3 まで進むと最初に戻ります。
フェード時間と 3 つのオフセットは変数なので、いくつかの数値を変えるだけで、地点を増やしたり、フェードをゆっくりにしたりできます。
拡張のアイデア
- 焚き火のように、見つけるとアンロックされるファストトラベル地点。
- 行き先を選べるマップ画面。
- 移動時のサウンドと、画面が黒いあいだに出すローディングの文字。
ファストトラベルプロンプトの 4 つのコツ
- プレイヤーを地面より上に置いて、安全に着地させる。
- 移動中にキーが押されたらどうなるかを書く。
- フェードの見え方を秒数で書く。
- フェードの途中で画面を確認するよう AI に頼む。
よくある質問
Unreal Engine 5 でファストトラベルを作るにはどうすればよいですか?
地点のリストを保持し、キーを押すたびにプレイヤーを次の地点へ移動させます。移動の前にフェードインし、移動の後にフェードアウトする全画面の黒いウィジェットで、移動の瞬間を隠します。
プレイヤーが地面の中に着地しないようにするにはどうすればよいですか?
目的地で下向きにトレースして地面を見つけ、そこから決めた高さだけ上にプレイヤーを置きます。この作例では 100 ユニットです。
フェードの最中にキーを押すとどうなりますか?
移動中のキー入力は無視されるので、一連の流れが壊れることはありません。その旨を依頼文に書いてください。
プロジェクトで試してみましょう
Ultimate Engine CoPilot で何が作れるかは 製品ページ でご覧いただけます。入手は Fab からどうぞ。AI Blueprint ジェネレーター のしくみもご覧ください。
このシリーズの他の作例: Unreal Engine チェックポイントシステム、Unreal Engine ポータルテレポーター、Unreal Engine コンパスバー。