Unreal Engine の 2 つの鍵のドア:AI で鍵が 2 つ必要なドアを作る
Unreal Engine で鍵付きドアを作る方法。赤と青の鍵、Keys 0/2 のカウンター、2 つそろうと 400 ユニット上へスライドする石のドアを AI が 1 回の依頼で作成。
Unreal Engine の鍵付きドアは、3 つの小さな要素でできています。拾える鍵、どの鍵を持っているかを覚えるカウンター、そして触れられたときに 1 つの質問をするドアです。両方持っているか。持っていれば開き、持っていなければそう伝えます。いちばん簡単な作り方は、鍵、ドア、画面上のテキストをまとめて、システム全体を 1 回の依頼で AI に作らせることです。
このチュートリアルでは、Ultimate Engine CoPilot が、赤い鍵と青い鍵の両方を持っているときにだけ開く石のドアを作ります。実際に使ったプロンプト、AI が画面で見つけたバグ、そして 2 つの鍵が必要なドアの仕組みのやさしい解説をお届けします。
完成したドアの動き
雪の中に石のドアがあり、赤と青の 2 つの鍵があります。画面の上部には、小さな文字で「Keys 0/2」と表示されています。ドアに触れると、「Door locked, you need two keys」と表示されます。1 つ目の鍵を拾うと「Keys 1/2」、2 つ目の鍵で「Keys 2/2」になります。もう一度ドアに触れると、ドアが上へスライドします。

左側の石のドアと、雪の上のプレイヤー。
プロンプト
これをコピーして、色やスライドの時間を変えながら、AI が何を作るか試してみてください。
Make a door that needs two keys. Create BP_KeyPickup in /Game/Series/EP41_TwoKeyDoor, a floating spinning key with a Color variable, red or blue, that is collected when the player touches it, with a small pop of particles replaced by a quick scale-down. Create BP_TwoKeyDoor in the same folder, a stone door 300 units wide and 400 high that slides up 400 units over 1.5 seconds once the player has collected both a red and a blue key. Show a small text in the top centre below the existing Blizzard box: Keys 0/2, Keys 1/2, Keys 2/2, and Door opened. If the player touches the door with fewer than two keys, show Door locked, you need two keys for 2 seconds. Keep the slide height and time as variables. Place the door near the player start, a red key 800 units to its left and a blue key 800 units to its right. Then play test it: touch the door with no keys and check the locked text, collect the red key and check Keys 1/2, collect the blue key and check Keys 2/2, touch the door and check it opens, and fix anything that does not work.
依頼文が小さな物語になっていることに注目してください。鍵なし:ロック。鍵が 1 つ:まだロック。鍵が 2 つ:開く。どの状態にもそれぞれのテキストがあり、AI はその 1 つ 1 つを作ってテストします。数値にも注目してください。400 ユニット、1.5 秒、2 秒です。これらは変更できる変数になります。
AI はどう作るのか
AI はまずプロジェクトを読み込みます。HUD の Blizzard のボックスと、その下端の位置を見つけ、鍵のテキストをそのすぐ下に置けるようにします。また、石のマテリアルを再利用するために、別のエピソードで作った古いドアも調べます。
するとアセットが現れます。Red と Blue を持つカラーの enum、2 つの鍵のマテリアル、鍵の Blueprint、ドアの Blueprint、そしてテキスト表示用の小さな HUD ウィジェットです。マテリアルはコンストラクションスクリプトで適用されるので、Play を押す前のエディタ上でも、鍵は正しい色で表示されます。ドアのスライドには Timeline が使われます。鍵に触れると、鍵はドアに知らせ、0.2 秒で縮んで消え、自分自身を取り除きます。

ドアのグラフ:触れると両方の鍵を確認し、Timeline がドアを上へスライドさせます。
プレイテストと 1 つのバグ
12 項目のチェックがすべて通りました。開始時の「Keys 0/2」、ロックのメッセージ、赤い鍵のあとの「Keys 1/2」、青い鍵のあとの「Keys 2/2」です。ドアはスライドし、途中では約 200 ユニット、最終的にちょうど 400 ユニットの高さまで上がります。
そのあと AI がスクリーンショットを見て、本物のバグを 1 つ見つけます。鍵のテキストが左上にアンカーされていたため、半分が画面の外にはみ出していたのです。AI はテキストのアンカーを上部中央に直し、少し下の Blizzard のボックスの下へ移動して、もう一度確認しました。
レポート

作成した内容、配置場所、注意すべき点。
レポートには変数が挙げられています。ドアには SlideHeight(400)と SlideTime(1.5)、各鍵には鍵の色があります。注意すべき点も書かれています。
- 鍵は、レベル内で最初に見つけたドアに知らせるため、1 つのレベルにドアを 2 つ置くには、もう少し手を加える必要があります。
- ドアは、以前のエピソードの石のマテリアル M_DoorStone を借りています。
- ロックのメッセージが表示されている最中に鍵を取っても、テキストは 2 秒が経つまでロックのメッセージのままで、そのあとに所持数を表示します。
- その場所の地面は平らではないため、ドアはプレイヤースタートより約 200 ユニット低い位置にあり、鍵の高さも少しずつ違います。
- プロジェクトのメインメニューは、プレイ開始時にまだ画面の上に表示されます。
テストでは、プレイヤーを各地点へテレポートさせてもいます。動画で実際のプレイを見せているのは、そのためです。
2 つの鍵が必要なドアのしくみをやさしく解説
鍵にはそれぞれ色があります。プレイヤーが鍵に触れると、鍵はドアに「私は赤です」または「私は青です」と伝えます。ドアは、赤を持っているか、青を持っているかという 2 つの答えを保存し、いくつが真かを数えてテキストを更新します。
プレイヤーがドアに触れると、1 つの分岐が 2 つの答えをまとめて確認します。両方が真なら、Timeline が再生され、ドアはスライドの時間をかけてスライドの高さだけ上へ動き、テキストには「Door opened」と表示されます。そうでなければ、テキストには「Door locked」と表示され、2 秒のタイマーでそれが消えます。スライドの高さと時間は変数なので、2 つの数値を変えるだけで、重いゲートにも、素早く開く落とし戸にもできます。
拡張のアイデア
- 3 つ目の鍵として、金色の鍵を加える。
- 鍵を取ったときの小さな効果音と、ドアが開くときの重い石の音。
- テキストの代わりに、画面にアイコンで表示される鍵。
鍵付きドアプロンプトの 4 つのコツ
- すべての状態に、それぞれのテキストを書く。
- スライドの高さと時間を数値で指定する。
- すべての部品を、プレイヤースタートからの相対位置で書く。
- 開いた場合だけでなく、ロックされた場合もテストするよう AI に頼む。
よくある質問
Unreal Engine 5 で 2 つの鍵が必要なドアを作るにはどうすればよいですか?
鍵にそれぞれ色を持たせます。鍵に触れると、ドアがその色を記録してカウンターを更新します。プレイヤーがドアに触れたとき、両方の答えが真の場合にだけ開きます。
プレイヤーが持っている鍵の数を表示するにはどうすればよいですか?
鍵を拾うたびにドアが更新する、小さなテキストウィジェットを使います。Keys 0/2、1/2、2/2 と進み、最後に「Door opened」と表示されます。
1 つのレベルにドアを 2 つ置けますか?
この作例のままでは置けません。鍵は、レベル内で最初に見つけたドアに知らせるため、ドアを 2 つ置くには、もう少し手を加える必要があります。
プロジェクトで試してみましょう
Ultimate Engine CoPilot で何が作れるかは 製品ページ でご覧いただけます。入手は Fab からどうぞ。AI Blueprint ジェネレーター のしくみもご覧ください。
このシリーズの他の作例: Unreal Engine 感圧板、Unreal Engine レバーと橋、Unreal Engine インタラクションプロンプト。