ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
Unreal Engine 5(UE5)のレベルブループリントでキャラクターを出現(スポーン)させるには、レベルブループリント内に「Event BeginPlay」などのイベントを置き、そこから「Spawn Actor from Class」ノードを実行して、スポーンしたいクラスと出現位置(Spawn Transform)を指定します。これにより、ゲーム開始時やトリガー発火時など、任意のタイミングで指定したアクターやキャラクターをレベル上に生成できます。この記事では、レベルブループリントの基本から具体的な手順、出現位置・タイミングの決め方、つまずきやすい落とし穴までを順に解説します。
| この記事の要点 |
|---|
|
レベルブループリントとは
レベルブループリントは、現在開いているレベル(マップ)専用に用意されたブループリントです。プロジェクト全体やアクター単体ではなく、「そのレベルでだけ起きる処理」をまとめて記述する場所として使われます。たとえば、特定のレベルでゲームが始まった瞬間に敵を配置する、レベル内の特定のドアを開いたら別のアクターを出現させる、といったレベル固有の演出やイベント処理に向いています。
レベルブループリントは各レベルに1つずつ存在し、レベルを切り替えると参照するレベルブループリントも切り替わります。そのため、汎用的に再利用したい処理は通常アクターのブループリントやゲームモードなどに置き、レベル固有の処理だけをレベルブループリントに書くのが一般的な使い分けです。
レベルブループリントの開き方
レベルブループリントは、出現処理を設定したいレベルを開いた状態から開きます。一般的な手順は次のとおりです(UEのバージョンやレイアウトによりメニュー名や位置が異なる場合があります)。
1. 設定したいレベルをエディタで開きます。
2. メインツールバーの「Blueprints(ブループリント)」ボタンを開き、メニューから「Open Level Blueprint(レベルブループリントを開く)」を選びます。
3. レベルブループリントのグラフエディタが開き、ノードを配置できる状態になります。
レベルブループリントを開くと、初期状態で「Event BeginPlay」や「Event Tick」などのイベントノードが用意されていることがあります。出現処理は、これらのイベントを起点に組み立てていきます。
キャラクターを出現させる手順
ここでは、ゲーム開始時にキャラクターを1体スポーンさせる基本的な流れを示します。大まかには「起点となるイベントを置く」→「Spawn Actor from Classを置く」→「クラスとTransformを指定する」→「(必要なら)操作可能にする」という順序です。
1. 起点となるイベントを用意する
まず、いつ出現させるかを決めるイベントを置きます。ゲーム開始時に出現させたい場合は「Event BeginPlay」を使います。レベルブループリントのグラフ上で右クリックして「Begin Play」と検索し、「Event BeginPlay」を追加します。これはレベルのプレイが開始された直後に一度だけ実行されるイベントです。
2. Spawn Actor from Classノードを追加する
次に、実際に生成を行う「Spawn Actor from Class」ノードを追加します。グラフ上で右クリックし、「Spawn Actor from Class」と検索して追加してください。このノードは指定したクラスのアクターをワールド上に新しく生成します。Event BeginPlayの実行ピン(白い矢印)を、このノードの実行ピンに接続します。
3. 出現させるクラスを指定する
「Spawn Actor from Class」ノードの「Class」入力に、出現させたいキャラクターやアクターのクラスを指定します。あらかじめ作成しておいたキャラクターのブループリント(たとえば Character を継承したブループリント)や、C++クラスを選択します。ここを指定しないとノードは生成対象を決められず、意図したアクターは出現しません。
4. Spawn Transform(位置・回転)を指定する
「Spawn Actor from Class」ノードには「Spawn Transform」という入力があり、ここで出現位置(Location)・回転(Rotation)・スケール(Scale)を指定します。座標を直接決めたい場合は、「Make Transform」ノードを追加して Location や Rotation を入力し、その出力を Spawn Transform に接続します。たとえば Location を X=0, Y=0, Z=100 にすると、ワールド原点から少し上の位置に出現します。後述するように、Player StartやTarget Pointなどのアクターの位置を取得して指定する方法もよく使われます。
5. 必要に応じて操作可能にする(Possess)
スポーンしたものをプレイヤーが操作するキャラクターにしたい場合は、生成しただけでは操作対象になりません。プレイヤーコントローラー(Get Player Controller などで取得)の「Possess」ノードに、スポーンしたアクター(「Spawn Actor from Class」ノードの「Return Value」出力)を渡して憑依(ポゼス)させます。これにより、入力がそのキャラクターに反映されるようになります。なお、敵やNPCのように操作しないアクターであればPossessは不要です。
処理の流れ(イメージ) Event BeginPlay └─▶ Spawn Actor from Class ・Class … 出現させるキャラクターのクラス ・Spawn Transform … Make Transform(Location / Rotation) ・Collision Handling Override … 出現時のコリジョン処理 ・Return Value … スポーンしたアクターの参照 └─▶(必要なら)Possess(Player Controller) |
出現位置の決め方
出現位置は座標で直接指定することもできますが、レベルの編集に合わせて位置を調整しやすくするために、レベル上に置いたアクターの位置を参照する方法がよく使われます。
| 位置の指定方法 | 概要 | 向いている場面 |
|---|---|---|
| 座標を直接指定 | Make Transform に X / Y / Z を入力する | 位置が固定で、レベル編集で動かさない場合 |
| Player Startを参照 | レベル上のPlayer Startアクターの位置を取得して使う | プレイヤー開始位置に合わせて出したい場合 |
| Target Point等を参照 | 目印として置いたTarget Pointなどの位置を取得して使う | 出現位置をエディタ上で見ながら調整したい場合 |
アクターの位置を使う場合は、対象アクターを取得(参照を変数に保持する、または Get Actor of Class などで取得する)してから「GetActorLocation」「GetActorRotation」で位置・回転を取り出し、それを Make Transform に渡します。エディタ上でTarget Pointなどを動かすだけで出現位置を調整できるため、レベルデザインとの相性が良い方法です。
出現タイミングの決め方
「いつ出すか」は起点となるイベントで決まります。代表的なものは次のとおりです。
- ゲーム開始時:Event BeginPlay を起点にします。レベルのプレイ開始直後に一度実行されます。
- プレイヤーがエリアに入ったとき:トリガーボックス(Box Collision を持つアクターなど)の OnComponentBeginOverlap といったオーバーラップイベントを起点にします。レベルブループリントからレベル上のトリガーを参照してイベントを受け取る形になります。
- 入力やゲーム内イベントに応じて:キー入力イベントや、独自に作成したカスタムイベントを起点にして、任意のタイミングでスポーンさせます。
同じ「Spawn Actor from Class」でも、どのイベントから実行するかを変えるだけで「開始時に出す」「踏んだら出す」「ボタンで出す」といった挙動を作り分けられます。
具体例:開始時に敵を1体出現させる
たとえば、レベル開始時に決まった位置へ敵キャラクターを1体出現させる場合の組み立て方は次のようになります。
1. レベルブループリントを開き、「Event BeginPlay」を配置します。
2. 「Spawn Actor from Class」を配置し、BeginPlayの実行ピンと接続します。
3. 「Class」に、出現させたい敵キャラクターのブループリントクラスを指定します。
4. 「Make Transform」を追加し、Location に出現させたい座標(例:X=500, Y=0, Z=100)を入力して、Spawn Transform に接続します。位置をエディタで調整したい場合は、レベルにTarget Pointを置き、その GetActorTransform を Spawn Transform に渡します。
5. 敵は操作しないため Possess は不要です。プレイ開始時に指定位置へ敵が1体出現します。
複数体を出したい場合は、座標を変えて「Spawn Actor from Class」を複数つなぐ、あるいは For Loop などの繰り返しと位置の計算を組み合わせて、まとめて生成する方法があります。
つまずきやすい落とし穴
| 症状 | よくある原因と対処 |
|---|---|
| 何も出現しない/nullになる | 「Class」が未指定、または出現位置がコリジョンにより生成を拒否されている可能性があります。クラスを正しく選択し、後述のCollision Handling Overrideを見直します。Return Valueが空(None)になっていないかも確認します。 |
| 出現位置がおかしい/原点に出る | Spawn Transform が未接続だと意図しない位置(初期値)に出ることがあります。Make Transform や対象アクターのTransformを接続できているか確認します。 |
| 床にめり込む/弾かれる | 出現位置に既存のコリジョンが重なっているケースです。出現Zを少し高くする、出現位置を空いた場所にする、またはCollision Handling Overrideの設定を見直します。 |
| 出したキャラクターを操作できない | プレイヤーが操作する想定なら、生成後にPlayer ControllerでPossessしているか確認します。逆に敵・NPCならPossessは不要です。 |
コリジョン(Collision Handling Override)について
「Spawn Actor from Class」ノードには「Collision Handling Override」という入力があり、出現位置に他のオブジェクトのコリジョンが重なっていたときの挙動を指定できます。主な選択肢は次のとおりです(名称はバージョンにより表記が異なる場合があります)。
| 設定 | 挙動の概要 |
|---|---|
| Default | 生成するクラス側に設定された既定の挙動に従います。 |
| Always Spawn, Ignore Collisions | コリジョンを無視して指定位置に必ず生成します(重なって出ることがあります)。 |
| Try To Adjust Location, But Always Spawn | 重なりを避ける位置への調整を試み、無理でも必ず生成します。 |
| Try To Adjust Location, But Don't Spawn If Still Colliding | 調整を試み、それでも重なる場合は生成しません(出現しないことがあります)。 |
| Do Not Spawn | 指定位置でコリジョンが重なっていれば生成しません。 |
「出現するはずなのに出ない」という場合、この設定が「重なっていたら生成しない」系になっていて、出現位置が壁や床、他アクターと重なっているケースが少なくありません。確実に出したいときは「Always Spawn, Ignore Collisions」を使い、出現後に位置を調整するといった対処が考えられます。ただしコリジョンを無視すると物理的に不自然な重なりが起きることもあるため、出現位置自体を空いた場所に取り直すことも検討してください。
よくある質問(FAQ)
Q. レベルブループリントとゲームモードのどちらでキャラクターを出すべきですか?
プレイヤーが操作する主人公キャラクターのように「どのレベルでも共通して出したいもの」は、ゲームモードのDefault Pawn ClassやPlayer Startの仕組みに任せると管理しやすくなります。一方、「このレベルだけで起きる演出」「特定の場所で敵を湧かせる」といったレベル固有の出現は、レベルブループリントで組むのが向いています。用途に応じて使い分けるのが基本です。
Q. スポーンしたキャラクターを後から操作したり、動かしたりできますか?
できます。「Spawn Actor from Class」ノードの「Return Value」が生成したアクターへの参照(リファレンス)なので、これを変数に保存しておけば、後からアニメーションを再生する、移動させる、プロパティを変更するなどの処理を続けて行えます。プレイヤー操作にしたい場合はPossessを使います。
Q. プレイヤーキャラクターが二重に出てしまうのですが?
ゲームモードのDefault Pawn ClassとPlayer Startによる自動スポーンと、レベルブループリントでの手動スポーンが両方走っていると、プレイヤーが重複して出ることがあります。手動でスポーン・Possessする運用にする場合は、ゲームモード側の自動スポーンを使わない構成にするなど、どちらか一方に出現の責任を寄せると整理しやすくなります。
レベルブループリントによるスポーンは、出現タイミングと位置を細かく制御できるのが利点です。まずはEvent BeginPlayから「Spawn Actor from Class」へつなぐ最小構成で1体出すところから始め、位置の参照方法やコリジョン設定、Possessの有無を必要に応じて足していくと、無理なく目的の出現処理を組み立てられます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 床の上に乗ったらイベントを発生させる方法
- OverlapAllDynamicとOverlapAllの違い
- タイトル画面を作る方法
- サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
- ボタンに文字を記載する方法
- Event ActorBeginOverlapとOn Component Begin Overlapの違い
- キャラクターに特定のオブジェクトとの当たり判定を付ける
- 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
- 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
- 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
- Blenderファイルをインポートする方法
- 鏡を作成する方法
- レベルブループリントでキャラクターの出現を設定する方法
- サードパーソンテンプレートにおけるキャラクター出現の定義
- アイテムに近づいたらボタンを押してイベントを発火させる方法
- 画面の中央にメッセージを表示する方法
- どこからでも呼び出せるカスタムイベントを作成する方法
- カスタムイベントに引数を追加する方法
- 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
- オブジェクトに近づいている間だけメッセージを表示する方法
- PCの画面を操作するUIを作る方法
- コンテンツブラウザに画像を追加する方法
- SetInputMode_UIOnlyを取り消す方法
- 特定の画像の上にマウスカーソルを置いたら手マークにする方法
- オブジェクトがアウトライナーで選択できない原因と解決策
- PlayerStartを作成する方法
- メニュー画面を作成して開く方法
- 「Esc」キーを押してメニュー画面を開く方法
- イベントの「On Clicked」と「On Pressed」の違い
- 「Set Input Mode」の種類と使い方
- 「Set Game Paused」の使い方と詳細解説
- Motion Matchingとは?
- 「GameMode」と「GameModeBase」の違い
- マップに配置したTargetPointを取得する方法
- TargetPointにタグをつけて取得する方法
- Spawnしたインスタンスがイベントを実行する方法
- 特定の時間ごとに処理を実行する方法
- 数値をランダムで出力する方法
- ThirdPersonテンプレートでキャラクターの移動を歩くように変更する方法
- MaxWalkSpeedを変更する方法
- しゃがむ動作を導入する方法
- キャラクターのアニメーションを設定する方法
- 導入済みのプラグインを確認する方法
- Motion Matchingの導入と必要なプラグイン
- プレイヤーを非表示にする方法
- カメラを傾ける角度を制限させる方法
- 配列からランダムに重ならない要素を特定の数取得する方法
- カメラの映す画面に文字やエフェクトを付ける方法
- キャラクターやメッシュを非表示にした際にカメラが移動しなくなる問題の解決方法
- プライマリーデータアセットを活用する方法
- プレイヤーのHPといった変数を定義する最適な場所
- カメラに映った画面をスクリーンショットとして保存する方法
- ゲーム内のカメラ映像を保存して再表示する方法
- HighResShot を使って高解像度の画像を保存する方法(UE5)
- HighResShotで保存した画像のファイル名を取得する方法
- SceneCapture2DとFrameGrabberの画像保存方法の比較
- SceneCapture2Dを使用して画像を保存・取得する方法
- HighResShotとTake High Res Screenshotの違い
- ゲーム終了ボタンを作成する方法
- 「Save Game To Slot」の戻り値がfalseになる問題の解決方法
- 画面上にメッセージを指定された時間表示させる方法
- シェーダコンパイル時間を短縮する方法
- 「Take High Res Screenshot」実行時に「シェーダをコンパイル」に長時間待たされる問題とその解決策
- データベースを活用する方法
- UE5.5がインストールされた環境にUE5.4を追加で導入する方法
- World PartitionとWorld Compositionの違い
- オープンワールドテンプレートとは?
- ポーンをスポーンさせても視点を切り替えない方法
- キャラクター同士がすり抜けてしまう問題の解決方法
- キャラクターの外見を動的に変更
- World Partitionでインスタンスが「アンロード済み」になる問題
- データ アセットとデータ テーブルの違い
- コンポーネントイベントグラフ内で親クラスの変数にアクセスする方
- エディターのソースコードの自動保存の頻度を高める方法
- SpawnActorでSpawn Transform Rotationが反映されない理由
- ミニマップを表示しポーンの位置を反映する方法
- RInterp ToとVInterp Toの違い
- 毎秒実行するイベントの定義方法
- Niagara のエフェクトにコリジョンを持たせる方法
- 「Overlap」と「Hit」の違い
- OverlapはあるがHitがない原因
- Overlapした位置の座標を取得する方法
- ブループリントでレベル間のパラメータを受け渡す方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?