足場を渡って、あと少しでゴール。ところが最後のジャンプに失敗し、また最初からやり直しになってしまう。途中に一つでも再開地点があれば、もう一度挑戦しやすくなります。
チェックポイント は、失敗したときに戻る場所を覚える仕組みです。そして リスポーン は、プレイヤーを再び遊べる状態へ戻す処理です。位置を戻すだけでなく、落下中の速度や一時的に止めた操作も整えます。
この記事では、足場の上の目印に触れたら記録し、落ちたら画面を暗くして、その目印へ戻る流れを作ります。目印にまだ触れていなければ、最初に出現した場所へ戻ります。
この記事でわかること
- 安全に立てる復帰地点を用意する
- 最後に通ったチェックポイントを覚える
- 落下を検知し、停止・暗転・復帰を一つの流れにする
- 戻る場所と、操作を再開できることを確かめる
UE5のThird Personテンプレートを使います。Blueprintで変数とCustom Eventを作れる人向けです。1人プレイ・同じレベル内で、同じキャラクターを戻す例として進 めます。
復帰は「場所を戻す」だけではない
落ちたキャラクターを足場へ移しても、落下速度が残っていれば、復帰直後に勢いよく地面へぶつかります。入力を止めたままなら、戻れても動けません。
今回は次の順に進めます。
- 止める:復帰処理中の目印を立て、入力と移動を止める
- 暗くして待つ:画面を黒くし、場所が切り替わる瞬間を隠す
- 戻す:覚えた場所と向きへキャラクターを移す
- 再開する:画面を明るくし、移動と入力を戻す

この流れを HandlePlayerDeath というCustom Eventへまとめます。Custom Eventは、名前を付けて呼び出せる処理の入口です。少し待つDelayを使うため、通常の関数ではなく、イベントグラフ上に作ります。 落下以外の死因も、後から同じイベントへつなげられます。
チェックポイントの記録は、今回戻すキャラクター自身に持たせます。キャラクターを消さずに移動するので、復帰先の変数も残るからです。レベルを開き直さないため、ほかのActorの状態もそのままです。
準備:3つの足場と、最初の復帰先
1. 歩いて落ちられる場所を作る
Third PersonのBlueprintプロジェクトを開きます。テンプレートに「Variant」の選択がある版では「None」を使い、Playで移動・ジャンプができることを先に確かめてください。
レベルを実験用に複製し、Cubeで3つの足場を作ります。隙間の下に既存の床や障害物がある場合は、後で置く落下検知の範囲へ入る前に着地しない配置にします。
たとえば、標準の100cm角のCubeなら、次の配置で試せます。3つともScaleは (6, 6, 0.5)、Rotationは (0, 0, 0)、Collisionは「BlockAll」です。
| 足場 | Location | 役割 |
|---|---|---|
| A | (0, 0, 300) | 最初の足場 |
| B | (850, 0, 300) | 1つ目のチェックポイント |
| C | (1700, 0, 300) | 2つ目のチェックポイント |
この寸法では足場の上面がZ=325です。既存のPlayer StartをAの上、たとえば (-150, 0, 425) へ移し、向きはYaw=0にします。Playの開始位置は「Default Player Start」を使います。

まずAへ出現し、足場の上を歩ければ準備できています。ここではまだ落下後には戻りません。
2. キャラクターに2つの変数を作る
Content/ThirdPerson/Blueprints/BP_ThirdPersonCharacter を開き、次を追加します。
| 変数名 | 型 | 初期値・用途 |
|---|---|---|
| LastCheckpointTransform | Transform | BeginPlayで実際の出現地点を入れる |
| bIsDead | Boolean | false。復帰処理中だけtrueにする |
Transform は、位置・回転・大きさを一組にした値です。ここでは「どこへ、どちら向きで戻るか」をまとめて覚えます。
BeginPlayの白い実行線に Set LastCheckpointTransform をつなぎ、値には Get Actor Transform(TargetはSelf)の出力を渡します。既存のBeginPlay処理がある場合は消さず、その末尾へ追加してください。

これで、チェックポイントを一度も通っていなくても、実際に出現した場所 へ戻せます。Transformの初期欄を空のまま使って、ワールドの原点へ飛ばしてしまうのを避けられます。
キャラクターの「Capsule Component」は「Generate Overlap Events」を有効にします。見た目の「Mesh」は同項目を無効にし、この例ではカプセルで領域への侵入を検知します。カプセル は、キャラクターを包む丸みのある当たり判定です。
チェックポイントを通ったら、復帰先を更新する
1. 戻る場所を、足場の上に決めておく
Actorを親に BP_Checkpoint を作り、次の3コンポーネントを追加します。すべてDefaultSceneRootの子にします。
| コンポーネント | 名前 | 設定 |
|---|---|---|
| Box Collision | Trigger | Relative Location=(0,0,100)、Box Extent=(100,100,100) |
| Arrow | RespawnPoint | Relative Location=(0,0,100)、Relative Rotation=(0,0,0) |
| Static Mesh | Marker | Cubeを指定。Relative Location=(0,-120,60)、Scale=(0.15,0.15,1.2)、CollisionはNoCollision |
Markerは、通過する場所が分かる細い柱です。慣れたら旗やかがり火の見た目へ差し替えられます。
TriggerのCollision Presetsを「Custom」、Collision Enabledを「Query Only」、Object Typeを「WorldDynamic」にします。Pawnへの応答だけを「Overlap」、ほかは「Ignore」にし、「Generate Overlap Events」を有効にしてください。
Overlap は、通り抜けた相手を検知する設定です。今回のTriggerは壁にはせず、キャラクターが入ったことだけを知らせます。
