ロブロックス(Roblox)のチェックポイントの作り方|落ちても途中から復活できるオビーを画像で解説

制作手順難易度: 入門所要時間: 約30分(目安)情報確認日: 2026年10月4日

「オビーで途中まで進んだのに、落ちるたびに最初からになってしまう」「チェックポイントってどうやって作るの?」

ロブロックス(Roblox)のチェックポイントの作り方を、実際の画像付きで誰でも簡単に分かるように解説します。この記事では、スタート→チェックポイント1→2の順に触れると、倒れてもその場所から復活できる仕組みを作ります。前の地点に戻っても記録が巻き戻らないこと、2人で遊んでも記録が混ざらないことまで確かめましょう。

入門ステップ13/24 前の記事:ロブロックス(Roblox)ゲームのサムネイルの作り方 全体の順番を見る

使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。フォルダーの作り方や部品の複製のしかたはオビーの作り方で画像付きで解説しています。

今回の完成状態:下の画像のように、チェックポイント1に触れたあとで倒れても、スタートではなくチェックポイント1の上から始まれば成功です。

チェックポイントの仕組み

ロブロックスでは、アバターが現れる場所を「SpawnLocation(スポーン地点)」という部品で決めます。チェックポイントは、その人が次に復活する場所(RespawnLocation)を、触れたSpawnLocationに書きかえることで作ります。

今回の決まりは次の6つです。

場面今回の動き
初めて参加するスタートから始まる
チェックポイント1に触れてから倒れる1から復活する
2まで進んでから1に戻る復活する場所は2のまま
1を通らずに2に触れる2は記録しない
Aさんだけが1に触れるBさんの復活する場所は変わらない
ゲームから抜けて入り直すスタートに戻る

1. 復活地点を3つ用意する

新しいBaseplateを開き、エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」(赤い枠)を押してください。画像の赤い枠が「次に押す場所」で、画像を押すと大きく表示できます。ボタンの名前や置き場所は、Roblox側の更新で変わることがあります。

一覧の検索欄に「Folder」と入れて、一覧の「Folder」(赤い枠)を押します。

エクスプローラにできた「Folder」を右クリックして「名前を変更」(赤い枠)を押し、「Checkpoints」と入れてください。

次にエクスプローラの「SpawnLocation」をつかんで「Checkpoints」の上で離し、フォルダーの中に入れてください。

エクスプローラで「Checkpoints」の中の「SpawnLocation」を選び、F2キーを押して「StartSpawn」と入力し、Enterキーを押します。

エクスプローラで「StartSpawn」を選んだ状態で、プロパティの検索欄に「Size」と入力します。Sizeの欄を「10, 1, 10」に変えて、Enterキーを押します(赤い枠)。

続けて「StartSpawn」を選んだまま、プロパティの検索欄に「Position」と入力します。「Position」はいくつか出てくるので、「▼CFrame」のすぐ下にあるPositionを「0, 2, 0」に変えて、Enterキーを押します(赤い枠)。

次に、StartSpawnを複製してCheckpoint1を作ります。エクスプローラで「StartSpawn」を選んだ状態でCtrl+Dキーを押すと、Checkpointsの中に同じ名前の「StartSpawn」がもう1つでき、新しくできた方が選ばれた状態になります(赤い枠)。

新しくできた方を選んだままF2キーを押し、「Checkpoint1」と入力してEnterキーを押します(画像の1)。

続けて「Checkpoint1」を選んだまま、プロパティの検索欄に「Position」と入力し、「▼CFrame」のすぐ下のPositionを「20, 2, 0」に変えてEnterキーを押します(画像の2)。

最後にCheckpoint2を作ります。エクスプローラで「Checkpoint1」を選んだ状態でCtrl+Dキーを押すと、Checkpointsの中に「Checkpoint1」がもう1つでき、新しくできた方が選ばれた状態になります(赤い枠)。

新しくできた方を選んだままF2キーを押し、「Checkpoint2」と入力してEnterキーを押します(赤い枠)。

続けて「Checkpoint2」を選んだまま、プロパティの検索欄に「Position」と入力し、「▼CFrame」のすぐ下のPositionを「40, 2, 0」に変えてEnterキーを押します(赤い枠)。

次の画像のように、スポーン地点の板が3枚、間をあけて並べば準備は完了です。

普通のPartに「Checkpoint1」と名前を付けても、チェックポイントにはなりません。必ずSpawnLocationを複製して作ります。

名前種類大きさ(Size)位置(Position)
StartSpawnSpawnLocation10, 1, 100, 2, 0
Checkpoint1SpawnLocation10, 1, 1020, 2, 0
Checkpoint2SpawnLocation10, 1, 1040, 2, 0

2. チェックポイントのスクリプトを入れる

エクスプローラの「ServerScriptService」にマウスを乗せて、右に出る「+」(赤い枠)を押してください。

一覧の「Script」(赤い枠)を押します。

エクスプローラにできた「Script」を選んだ状態でF2キーを押し、「CheckpointController」と入力してEnterキーを押します。

続けて「CheckpointController」を選んだまま、プロパティの検索欄に「RunContext」と入力し、RunContextの一覧から「Server」(赤い枠)を選びます。RunContextは、スクリプトをサーバーとプレイヤーのどちらで動かすかを決める設定です。

CheckpointControllerをダブルクリックして開き、中身を全部消して、次のコードを貼り付けます。コード欄の右上の「コピー」を押すと、まとめてコピーできます。

local Players = game:GetService("Players")
local folder = workspace:WaitForChild("Checkpoints")
local start = folder:WaitForChild("StartSpawn")
local points = {
    folder:WaitForChild("Checkpoint1"),
    folder:WaitForChild("Checkpoint2"),
}
local stages = {}

local function configure(spawn)
    assert(spawn:IsA("SpawnLocation"), spawn.Name .. "はSpawnLocationが必要です")
    spawn.Anchored = true
    spawn.CanCollide = true
    spawn.CanTouch = true
    spawn.Enabled = true
    spawn.Neutral = true
    spawn.AllowTeamChangeOnTouch = false
end
configure(start)
for _, point in points do configure(point) end

local function setup(player)
    if stages[player] ~= nil then return end
    stages[player] = 0
    player.RespawnLocation = start
    player:SetAttribute("CheckpointStage", 0)
end
Players.PlayerAdded:Connect(setup)
Players.PlayerRemoving:Connect(function(player) stages[player] = nil end)
for _, player in Players:GetPlayers() do setup(player) end

for index, point in points do
    point.Touched:Connect(function(hit)
        local character = hit:FindFirstAncestorOfClass("Model")
        local player = character and Players:GetPlayerFromCharacter(character)
        local humanoid = character and character:FindFirstChildOfClass("Humanoid")
        if not player or not humanoid or humanoid.Health <= 0 then return end
        local current = stages[player]
        if current == nil or index ~= current + 1 then return end
        stages[player] = index
        player.RespawnLocation = point
        player:SetAttribute("CheckpointStage", index)
        print(player.Name, "チェックポイント", index)
    end)
end

コードの中の「stages[player]」は、人ごとに「どこまで進んだか」の番号を持つ入れ物です。「index ~= current + 1」は、次の番号のチェックポイント以外は記録しないという決まりです。そのため、前の地点に戻ったり、順番を飛ばしたりしても記録は変わりません。

3. 1人でテストして、復活する場所を確かめる

3D画面の上の作品のタブ「Place8」(赤い枠)を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。アバターはStartSpawnの上に出てきます。

Dキーで右へ歩いて、チェックポイント1の板に乗ってみましょう。下の出力に「(アカウント名) チェックポイント 1」と出れば、記録できています。

出力欄が開いていないときは、3D画面上部メニューの「ウィンドウ」を押し、一覧の「出力」(赤い枠)を押して開きます。

本当にそこから復活するかを確かめます。少し歩いて板から降りたら、Escキーを押します。ロブロックスのメニューが開くので、下の「リスポーン」(赤い枠)を押します。リスポーンは、アバターを倒して出し直す操作です。

「キャラクターをリスポーンしてよろしいですか?」と出たら、「リスポーン」を押します。

数秒後、アバターがスタートではなくチェックポイント1の上に出てくれば成功です。

前に戻っても巻き戻らないか

続けてチェックポイント2まで歩き、出力に「(アカウント名) チェックポイント 2」と出たら、チェックポイント1まで歩いて戻ります。そこでリスポーンすると、戻った1ではなく2の上から始まります。

順番を飛ばすと記録されないか

Shift + F5キーでテストを停止します。3D画面の上の作品のタブ「Place8」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。テストを止めるとゲームから抜けたのと同じになるので、アバターはまたStartSpawnの上に出てきます。

今度はチェックポイント1に触れずに、チェックポイント2へ乗ります。W・A・S・Dキーで歩き、チェックポイント1の板には乗らずに奥側を回り込んで、チェックポイント2の板に乗ります。出力には何も出ません。

ここでリスポーンすると、スタートの上に戻ります。順番どおりに進んだときだけ記録されることが確かめられました。

4. 2人でテストして、記録が混ざらないか確かめる

2人でテストする前に、手順3の1人用のテストを終わらせておきます。画面左上の赤い四角の「停止」ボタン(赤い枠)を押すか、Shiftキーを押しながらF5キーを押すと、いつもの編集画面に戻ります。テスト中は「テスト」のメニューが灰色になって選べないので、必ず止めてから次へ進んでください。

画面左上の「テスト」の右の「∨」を押し、一覧から「サーバーとクライアント」(赤い枠)を選びます。

人数の上向き三角(画像の1)を押して「2」にし、青い再生ボタン(画像の2)を押してください。

しばらく待つと、元のStudioの窓とは別に、「サーバー」の窓と、Player1・Player2のテストの窓が開きます。テストの窓の右上の一覧では、その窓の人の名前が白く、もう1人の名前は灰色で出ます。これで、どちらがPlayer1の窓かを見分けます。一覧が出ていないときは、窓の3D画面を1回押してからTabキーを押します。

  1. Player1の窓を押して前に出し、Dキーで右へ歩いてチェックポイント1に乗ります。
  2. Player1の窓のままEscキーを押し、「リスポーン」を押します。確認が出たら、もう一度「リスポーン」を押します。
  3. Player2の窓を押して前に出し、Escキーを押して「リスポーン」を押します。確認が出たら、もう一度「リスポーン」を押します。

下の画像は、2つの窓を左右に並べたものです。左がPlayer1、右がPlayer2です。Player1は1の上、Player2はスタートの上から始まれば、人ごとに記録が分かれている証拠です。

確かめたら、元のStudioの窓の左上の赤い丸の「終了」ボタン(赤い枠)で2人のテストを閉じます。

チェックポイントが動かないときの直し方

困ったこと確かめること直し方
出力に「SpawnLocationが必要です」と出る普通のPartで作っていないかSpawnLocationを複製して作り直す
出力に名前を待つ警告が出る「Checkpoints」と中の3つの名前が同じか(大文字・小文字も)エクスプローラで名前を直す
触れても「チェックポイント」と出ない順番どおりに触れたか。RunContextが「Server」かスタートから順番に触れる。エクスプローラでCheckpointControllerを選び、プロパティの検索欄に「RunContext」と入力して「Server」を選ぶ
出力には出るのに違う場所で復活する記事のコードを全部貼り付けたか(コードの configure の部分が、板の Enabled と Neutral を自動で入れます)CheckpointControllerの中身を全部消して、記事のコードを貼り直す
2人が同じ場所に戻るコードの「stages[player]」を書きかえていないか記事のコードに戻す

AIでチェックポイントを増やすとき

チェックポイントを3つ目、4つ目と増やしたいときは、AIに次のように頼みます。

Roblox Studioで、StartSpawn→Checkpoint1→Checkpoint2の順に進むチェックポイントを作りました。
復活する場所はPlayer.RespawnLocationで決めています。
今のコードを貼るので、Checkpoint3を追加する最小の変更を教えてください。
前の地点に戻っても巻き戻らない、人ごとの記録が混ざらない、抜けたら最初に戻る、という決まりは変えないでください。

よくある質問

ゲームから抜けても続きから遊べるようにできる?

できますが、今回のコードではできません。今回の記録はゲームに入っている間だけのもので、抜けると消えます。次の日も続きから遊べるようにするには、どのチェックポイントまで進んだかを「DataStore」というデータ保存の仕組みで残し、次に入ったときにその板を復活場所にします。数字の保存と読み込みはDataStoreの使い方で解説しています。

チェックポイントの板の色や模様は変えられる?

もちろん変えられます。模様は、エクスプローラで「Checkpoint1」の左の▶を押して開き、中の「Decal」を選んでDeleteキーを押すと消えます。色は、板を選んだ状態でプロパティの検索欄に「Color」と入力し、Colorの欄で変えます。どれがチェックポイントか分かるように、スタートと色を変えておくと遊ぶ人が迷いません。

次のステップ(入門 14/24)

次は、押すと開く「遊び方」のボタンを画面に付けます。

→ ロブロックス(Roblox)スタジオでボタンを作る方法

次に知りたいことを選ぶ

次に読む記事