「ロブロックスで、友だちとタイムを競えるレースゲームを作りたい」「車は作れたけど、見た目がブロックのままでかっこよくない」
ロブロックス(Roblox)のレースゲームの作り方を、実際の画像付きで誰でも簡単に分かるように解説します。ここでは、車の作り方で作った車(以下、「走る車」と呼びます)に、Studioに入っている公式のAIで作ったレーシングカーの車体を載せます。そのあと四角いコースとゴールの線を置き、1周するたびに周回数とベストタイムが右上に出るようにします。
上級ステップ12/42 前の記事:ロブロックス(Roblox)のホラーゲームの作り方 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、マウス、キーボード、インターネットへのつながり。この記事は、走る車から始めます。AIでモデルを作る基本はモデルの作り方で解説しています。
今回の完成状態:下の画像のように、AIで作ったピンクのレーシングカーに乗ってコースを走り、ゴールの線を通ると右上の「周回数」と「ベスト」(いちばん速かった1周の秒数)が増えれば成功です。

作るものと流れ
| 順番 | 作るもの | 使う部品 |
|---|---|---|
| 1〜3 | AIでレーシングカーの車体を作り、走る車に載せる | アシスタントの /generate_mesh、WeldConstraint |
| 4 | 四角いコース | Part 4本(道路) |
| 5 | ゴールの線とチェックポイント | Part 2枚(通り抜けられる板) |
| 6 | 周回数とベストタイムを数えるスクリプト | Script「LapManager」 |
| 7 | テストで1周する |
チェックポイントは、ゴールの線のまわりを行ったり来たりして周回数をかせぐ、ずるを防ぐための板です。コースの外の地面も走れるので、近道まで全部防ぐには、道路の外側に低い壁のパーツを並べます。ゴールの線を通る前にチェックポイントを通っていないと1周に数えません。
1. AIにレーシングカーの車体を頼む
走る車がある作品を開きます。車体(Chassis)は、車の作り方と同じ Position「0, 2.5, -20」に置いたままにします。作品を保存していなかったときは、車の作り方の手順で車を作ってから始めます。
アシスタント(Studioに入っている公式のAI)の窓を開きます。Studioの右上の、いちばん右のアカウントのアイコンから2つ左(通知のベルのすぐ左)にある、四角を組み合わせた形のボタンを押します(画像の1。マウスを乗せると「AIアシスタント」と出ます)。Studioの右に「アシスタント」の窓が別に開きます(画像の2)。くわしい使い方はモデルの作り方の1で解説しています。

アシスタントの窓のいちばん下の欄(画像の1)に次の1行を入れて、右下の青い丸の送るボタン(画像の2)を押します。
/generate_mesh タイヤのない赤いレーシングカーの車体

3D画面に水色の箱(画像の1)が置かれ、アシスタントに設定の画面が出ます。「パーツ名」(画像の2)は、AIが部品の分け方を考える欄です。編集部が2回試したところ、1回目はbody(車体)のほかに4本のタイヤの名前が出て、2回目は何も出ませんでした。

タイヤは走る車に付いているので、車体だけを作ります。パーツ名の下の「パーツ名を入力…」の欄に「body」と入れてEnterキーを押し、「body」だけ(赤い枠)にします。タイヤの名前(left front wheel など)が出ていたときは、名前の右の「×」を押して消します。まだ「メッシュを生成」は押しません。

2. 箱を車の上に動かして、車体を作る
アシスタントの設定の画面は開いたままにします。エクスプローラで「AssistantMeshGenBoundingBox」(画像の1)が選ばれていることを確かめます。これが水色の箱です。選ばれていないときは、エクスプローラでAssistantMeshGenBoundingBoxを押します。
AssistantMeshGenBoundingBoxを選んだ状態で、プロパティの検索欄に「Position」と入れます。Positionは3つ出るので、▼CFrame のすぐ下のPositionの欄に「0, 4.5, -20」と入れて、Enterキーを押します(画像の2)。箱(画像の3)が車の上に動きました。

続けてプロパティの検索欄に「Size」と入れます。Sizeの欄に「6, 3, 10」と入れて、Enterキーを押します(画像の1)。箱(画像の2)が、走る車の車体と同じ横6・奥行き10の大きさになりました。ここで、アシスタントの設定の画面の右下の「メッシュを生成」(画像の3)を押します。

「メッシュを生成」を押してしばらくすると、見本の絵が4枚出ます。編集部は右下の平たい車体(画像の1)を選び、「確定」(画像の2)を押しました。

「同意する」(赤い枠)を押します。

編集部の試しでは、約3分で「生成済み タイヤのない赤いレーシングカーの車体」と出ました。回る見本を確かめて、「プレースに追加」(赤い枠)を押します。

車の上に、ピンクのレーシングカー(画像の1)が載りました。エクスプローラには、頼んだ言葉と同じ名前のモデル(画像の2)ができています。部品名を body だけにしても、見本の絵にあったタイヤが車体と一体の形で付いてきました。AIの生成は、頼んだ言葉どおりにならないことがあります。アシスタントの窓は、右上の×で閉じて大丈夫です。

3. 車体を地面に下ろし、走る車にくっつける
AIの車体にタイヤが付いてきたので、AIの車体を地面まで下ろして、走る車の車体とタイヤを見えなくします。見た目はAIの車体、走るしくみは走る車、という分け方です。
AIの車体を下ろす
エクスプローラで「タイヤのない赤いレーシングカーの車体」(画像の1)を押して選びます。そのモデルを選んだ状態で、プロパティの検索欄に「Origin」と入れます。▼Origin のすぐ下のPositionの欄に「0, 1.6, -20」と入れて、Enterキーを押します(画像の2)。AIの車体の下の端が、ほぼ地面の高さになります。この時点では、走る車の車体に隠れて見えにくくなります。

走る車を見えなくする
エクスプローラで「Chassis」を押し、Ctrlキーを押しながら「WheelFL」「WheelFR」「WheelRL」「WheelRR」「DriverSeat」を押して、6つを選びます(画像の1)。6つを選んだ状態で、プロパティの検索欄に「Transparency」と入れます。Transparencyの欄に「1」と入れて、Enterキーを押します(画像の2)。6つまとめて「1」になります。Transparencyは透明さで、1にすると見えなくなります。消すのではないので、走るしくみはそのまま動きます。

AIの車体を軽くして、ぶつからないようにする
エクスプローラで「タイヤのない赤いレーシングカーの車体」の左の「▶」を押し、中の「body」も開いて、「body_geom」(画像の1)を押します。これがAIの車体の形です。body_geomを選んだ状態で、プロパティの検索欄に「CanCollide」と入れ、CanCollideの右の四角を押してチェックを外します(画像の2)。AIの車体が地面や走る車とぶつかって車が動かなくなるのを防ぎます。

続けてbody_geomを選んだまま、検索欄に「Massless」と入れ、Masslessの右の四角を押してチェックを入れます(赤い枠)。Masslessは「重さを0にする」設定です。AIの車体の重さで走る車のタイヤのモーターが遅くなるのを防ぎます。
最後に、検索欄に「Anchored」と入れて、Anchored(固定)のチェックが外れていることを確かめます。チェックが入っていると車が動きません。編集部の車体は、最初から外れていました。入っていたときは、右の四角を押してチェックを外します。

走る車にくっつける
「body_geom」にマウスを乗せて「+」を押し、検索欄に「WeldConstraint」と入れて、一覧の「WeldConstraint」(赤い枠)を押します。WeldConstraintは、2つの部品をくっつける部品です。

body_geomの中にWeldConstraintが入り、選ばれた状態になります。WeldConstraintを選んだまま、プロパティの検索欄に「Part」と入れます。「Part0」の右の欄(画像の1)を押すと、エクスプローラから部品を選ぶ状態になります。そのままエクスプローラの「body_geom」(画像の2)を押します。

同じように「Part1」の右の欄を押してから、エクスプローラの「Chassis」(画像の2)を押します。Chassisはエクスプローラの下のほうにあるので、見えないときはエクスプローラをマウスのホイールで下へ動かします。Part0が「body_geom」、Part1が「Chassis」(画像の1)になり、3D画面に2つの部品を囲む緑の線が出ました。これで、走る車の車体が走ると、AIの車体も一緒に動きます。

| 設定 | 値 | 理由 |
|---|---|---|
| AIの車体の Origin の Position | 0, 1.6, -20 | 地面の高さに下ろす |
| 走る車の6つの Transparency | 1 | 走るしくみは残し、見た目だけ消す |
| body_geom の CanCollide | オフ | ぶつかって車が止まらないようにする |
| body_geom の Massless | オン | 重さでタイヤのモーターが遅くならないようにする |
| WeldConstraint | Part0 body_geom、Part1 Chassis | 走る車の車体と一緒に動かす |
4. 四角いコースを作る
エクスプローラの「Workspace」にマウスを乗せて「+」を押します。一覧の検索欄に「Folder」と入れて、一覧の「Folder」を押します。フォルダーが選ばれた状態でF2キーを押し、「Course」と入れてEnterキーを押します。
次に「Course」にマウスを乗せて「+」を押します。一覧の検索欄に「Part」と入れて、一覧の「Part」を押します。入ったPartが選ばれた状態でF2キーを押し、「Road1」と入れてEnterキーを押します(画像の1)。
Road1を選んだ状態で、プロパティの検索欄に「Size」と入れます。Sizeの欄に「30, 0.1, 240」と入れて、Enterキーを押します(画像の2)。幅30、長さ240の、うすい道路です。下の画像は、このあとの表の値も入れ終わったあとの状態です。

続けてRoad1を選んだまま、残りのプロパティを変えます。入れる値は次のとおりです。
| プロパティ | 値 | 意味 |
|---|---|---|
| Position(▼CFrame のすぐ下) | 0, 0.05, -140 | 車のいる場所から奥へまっすぐのびる道 |
| Material | Asphalt | アスファルトの見た目 |
| Color | 30, 30, 35 | 黒に近い灰色。地面と見分けやすい |
| Anchored | チェックを入れる | 固定する |
| CanCollide | チェックを外す | 車が道路の段差に引っかからないようにする |
- プロパティの検索欄に「Position」と入れます。▼CFrame のすぐ下のPositionの欄に「0, 0.05, -140」と入れて、Enterキーを押します(下の1枚目)。
- 検索欄に「Material」と入れ、Materialの欄を押して一覧から「Asphalt」を選びます(2枚目)。
- 検索欄に「Color」と入れ、Colorの欄の右の数字の部分を押して「30, 30, 35」と入れ、Enterキーを押します(3枚目)。
- 検索欄に「Anchored」と入れ、Anchoredの右の四角を押してチェックを入れます(4枚目)。
- 検索欄に「CanCollide」と入れ、CanCollideの右の四角を押してチェックを外します(5枚目)。
CanCollideを外した道路は通り抜けられるうすい板になり、車は下の灰色の地面の上を走ります。道路の厚さ0.1のぶん、タイヤが少し埋もれて見えますが、走り方は変わりません。
残りの3本は、Road1を複製して作ります。Material・Color・Anchored・CanCollideは、複製するとRoad1と同じ値になるので変えません。1本ずつ、次の1〜5の順に作ります。
1本目:Road2
- エクスプローラでRoad1を押して選びます。Road1を選んだ状態でCtrl + Dキーを押します。
- 同じ場所に重なって複製ができ、複製したほうが選ばれた状態になります。
- そのままF2キーを押し、「Road2」と入れてEnterキーを押します。
- Road2を選んだまま、プロパティの検索欄に「Size」と入れ、Sizeの欄に「230, 0.1, 30」と入れてEnterキーを押します。
- 検索欄に「Position」と入れ、▼CFrame のすぐ下のPositionの欄に「100, 0.05, -260」と入れてEnterキーを押します。
2本目:Road3
- エクスプローラでRoad1を押して選びます。Road1を選んだ状態でCtrl + Dキーを押します。
- 同じ場所に重なって複製ができ、複製したほうが選ばれた状態になります。
- そのままF2キーを押し、「Road3」と入れてEnterキーを押します。
- Road3を選んだまま、プロパティの検索欄に「Size」と入れ、Sizeの欄に「30, 0.1, 240」と入れてEnterキーを押します。
- 検索欄に「Position」と入れ、▼CFrame のすぐ下のPositionの欄に「200, 0.05, -140」と入れてEnterキーを押します。
3本目:Road4
- エクスプローラでRoad1を押して選びます。Road1を選んだ状態でCtrl + Dキーを押します。
- 同じ場所に重なって複製ができ、複製したほうが選ばれた状態になります。
- そのままF2キーを押し、「Road4」と入れてEnterキーを押します。
- Road4を選んだまま、プロパティの検索欄に「Size」と入れ、Sizeの欄に「230, 0.1, 30」と入れてEnterキーを押します。
- 検索欄に「Position」と入れ、▼CFrame のすぐ下のPositionの欄に「100, 0.05, -20」と入れてEnterキーを押します。
3本とも作ったら、入れた値を次の表で見直します。
| 名前 | Size | Position(▼CFrame のすぐ下) |
|---|---|---|
| Road2 | 230, 0.1, 30 | 100, 0.05, -260 |
| Road3 | 30, 0.1, 240 | 200, 0.05, -140 |
| Road4 | 230, 0.1, 30 | 100, 0.05, -20 |
4本がそろうと、上から見て四角いコース(画像の2)になります。エクスプローラのCourseの中に、4本の道路(画像の1)が並んでいます。

5. ゴールの線とチェックポイントを置く
ゴールの線
エクスプローラの「Workspace」にマウスを乗せて「+」を押します。一覧の検索欄に「Part」と入れて、一覧の「Part」を押します。入ったPartが選ばれた状態でF2キーを押し、「FinishLine」と入れてEnterキーを押します。
FinishLineを選んだまま、プロパティを変えます。入れる値は次の表のとおりで、表の下の1〜7の順に1つずつ入れます。
| プロパティ | 値 | 意味 |
|---|---|---|
| Size | 30, 8, 1 | 道幅いっぱいの、縦に立った板 |
| Position(▼CFrame のすぐ下) | 0, 4, -60 | 車の少し前 |
| Material | Neon | 光る見た目 |
| Color | 255, 255, 255 | 白 |
| Transparency | 0.6 | 向こうが透けて見える |
| Anchored | チェックを入れる | 固定する |
| CanCollide | チェックを外す | 車が通り抜けられる |
- プロパティの検索欄に「Size」と入れ、Sizeの欄に「30, 8, 1」と入れてEnterキーを押します(下の1枚目)。
- 検索欄に「Position」と入れ、▼CFrame のすぐ下のPositionの欄に「0, 4, -60」と入れてEnterキーを押します(2枚目)。
- 検索欄に「Material」と入れ、Materialの欄を押して一覧から「Neon」を選びます(3枚目)。
- 検索欄に「Color」と入れ、Colorの欄の右の数字の部分を押して「255, 255, 255」と入れ、Enterキーを押します(4枚目)。
- 検索欄に「Transparency」と入れ、Transparencyの欄に「0.6」と入れてEnterキーを押します(5枚目)。
- 検索欄に「Anchored」と入れ、Anchoredの右の四角を押してチェックを入れます(6枚目)。
- 検索欄に「CanCollide」と入れ、CanCollideの右の四角を押してチェックを外します(7枚目)。
車の前に、透けた白い板が立ちました。ここがスタートとゴールの場所です。
チェックポイント
チェックポイントは、FinishLineを複製して作ります。エクスプローラでFinishLineを押して選びます。FinishLineを選んだ状態でCtrl + Dキーを押します。
複製したほうが選ばれた状態になるので、そのままF2キーを押し、「Checkpoint」と入れてEnterキーを押します(画像の1)。
Checkpointを選んだ状態で、プロパティの検索欄に「Position」と入れます。▼CFrame のすぐ下のPositionの欄に「200, 4, -140」と入れて、Enterキーを押します(画像の2)。コースの反対側の道路(Road3)に板(画像の3)が立ちます。

続けて検索欄に「Color」と入れ、Colorの欄の右の数字の部分を押して「255, 200, 0」と入れ、Enterキーを押します。板が黄色になります。Size・Material・Transparency・Anchored・CanCollideは、FinishLineと同じ値のままにします。

上から見ると、白いゴールの線(画像の1)と黄色いチェックポイント(画像の2)が、コースの向かい合った場所にあります。車は、白い線から奥へ進み、右へ曲がりながらコースを1周して、白い線に戻ってきます。

6. 周回数とベストタイムを数えるスクリプトを入れる
エクスプローラの「ServerScriptService」にマウスを乗せて「+」を押します。一覧の検索欄に「Script」と入れて、一覧の「Script」を押します。入ったScriptが選ばれた状態でF2キーを押し、「LapManager」と入れてEnterキーを押します(下の画像の上の赤い枠)。
LapManagerを選んだ状態で、プロパティの検索欄に「RunContext」と入れます。RunContextは、スクリプトをサーバーとプレイヤーのパソコンのどちらで動かすかを決める設定です。▼動作 の下のRunContextの欄を押して、一覧から「Server」を選びます(下の赤い枠)。

エクスプローラのLapManagerをダブルクリックして開きます。中身を全部消して、次のコードを貼り付けます(コードの画面の中を押してからCtrl + Aキーで全部選び、Deleteキーで消します)。
local Players = game:GetService("Players")
local chassis = workspace:WaitForChild("Chassis")
local seat = workspace:WaitForChild("DriverSeat")
local finishLine = workspace:WaitForChild("FinishLine")
local checkpoint = workspace:WaitForChild("Checkpoint")
local lapStart = {} -- 人ごとに、今の周を走り始めた時刻
local passedCheckpoint = {} -- 人ごとに、今の周でチェックポイントを通ったか
-- 右上の一覧に「周回数」と「ベスト」(秒)を出す
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local laps = Instance.new("IntValue")
laps.Name = "周回数"
laps.Parent = leaderstats
local best = Instance.new("NumberValue")
best.Name = "ベスト"
best.Parent = leaderstats
end)
Players.PlayerRemoving:Connect(function(player)
lapStart[player] = nil
passedCheckpoint[player] = nil
end)
-- 車体(Chassis)が触れたときだけ、運転している人を返す
local function getDriver(hit)
if hit ~= chassis then return nil end
local humanoid = seat.Occupant
if not humanoid then return nil end
return Players:GetPlayerFromCharacter(humanoid.Parent)
end
-- チェックポイントを通ったら、印を付ける(近道を防ぐ)
checkpoint.Touched:Connect(function(hit)
local player = getDriver(hit)
if player and lapStart[player] then
passedCheckpoint[player] = true
end
end)
-- ゴールの線を通ったとき
finishLine.Touched:Connect(function(hit)
local player = getDriver(hit)
if not player then return end
local now = os.clock()
if not lapStart[player] then
-- 1回目に通ったときは、計り始めるだけ
lapStart[player] = now
passedCheckpoint[player] = false
print(player.Name, "スタート!")
return
end
if not passedCheckpoint[player] then return end -- チェックポイントを通っていなければ数えない
local lapTime = math.floor((now - lapStart[player]) * 10 + 0.5) / 10 -- 0.1秒まで
local stats = player.leaderstats
stats["周回数"].Value += 1
if stats["ベスト"].Value == 0 or lapTime < stats["ベスト"].Value then
stats["ベスト"].Value = lapTime
end
print(player.Name, "1周", lapTime, "秒")
lapStart[player] = now
passedCheckpoint[player] = false
end)
エクスプローラのServerScriptServiceの中にLapManager(画像の1)があり、上のタブに「LapManager」(画像の2)が開いてコードが入りました。

| コードの部分 | していること |
|---|---|
| leaderstats | 右上の一覧に「周回数」と「ベスト」の欄を作る(leaderstatsという名前のフォルダーをプレイヤーに入れると、中の数字が右上の一覧に出る) |
| getDriver | 触れたのが車体(Chassis)で、運転席にだれか座っているときだけ、その人を返す |
| checkpoint.Touched | 走り始めている人がチェックポイントを通ったら、印を付ける |
| finishLine.Touched(1回目) | はじめて通ったときは、時間を計り始めるだけ |
| finishLine.Touched(2回目から) | チェックポイントを通っていれば、1周の秒数を出し、周回数を1増やし、速ければベストを書きかえる |
| os.clock() | ある時点からの経過秒数。2回通ったときの差で、1周の秒数を出す |
「ずる」を防ぐ考え方は、チェックポイントの作り方の、決まった順番で触れたときだけ進めるしくみと同じです。
7. テストで1周する
テストの前に、車の曲がり方をコースに合わせて弱くします。走る車のTURNは10です。このままだと角で向きが大きく変わりすぎて、道から外れやすくなるので、3にします。
エクスプローラの「DriverSeat」の左の▶を押して開き、中の「DriveScript」をダブルクリックして開きます。開いたDriveScriptの画面で、中身を全部消して、次のコードを貼り付けます。走る車のコードの、TURNの行だけを3にしたものです。
local seat = script.Parent
local chassis = workspace:WaitForChild("Chassis")
local SPEED = 20 -- タイヤが回る速さ(大きいほど速く走る)
local TURN = 3 -- 曲がるときの左右の速さの差(大きいほど急に曲がる)
local leftHinges = { chassis:WaitForChild("HingeFL"), chassis:WaitForChild("HingeRL") }
local rightHinges = { chassis:WaitForChild("HingeFR"), chassis:WaitForChild("HingeRR") }
-- W・Sキー(ThrottleFloat)とA・Dキー(SteerFloat)から、左右のタイヤの速さを決める
local function update()
-- この車は、回る速さがマイナスのときに座席の向き(前)へ進む
local forward = -seat.ThrottleFloat * SPEED
local turn = -seat.SteerFloat * TURN
for _, hinge in leftHinges do
hinge.AngularVelocity = forward + turn
end
for _, hinge in rightHinges do
hinge.AngularVelocity = forward - turn
end
end
seat:GetPropertyChangedSignal("ThrottleFloat"):Connect(update)
seat:GetPropertyChangedSignal("SteerFloat"):Connect(update)

以下は、アソビシフト編集部が2026年11月2日にテストで確かめた結果です。
3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。運転席は見えなくなっていますが、AIの車体のまん中あたりにあります。スタート地点からWキーで車へ歩いていき、運転席に触れると座れます。車の横を通りすぎて座れなかったときは、AキーかDキーで車のほうへ寄り、Wキーで少しだけ前へ進むと座れます。下に「速度」の表示が出れば、座れています。下の画像は、テストで運転席に座ったところです(赤い枠)。

そのままWキーで前へ進み、白いゴールの線を通ると、出力に「(アカウント名) スタート!」と出ます。右上の一覧が出ていないときは、Tabキーを押すと出ます。下の画像は、テストでゴールの線を1回通ったところです。右上の一覧(画像の1)は周回数もベストも0で、出力に「スタート!」(画像の2)が出ています。

このコースは右回りです。まっすぐな道はWキーを押したまま走り、角に来たらWキーを離して止まります。止まったままDキーを押し続けると、その場で右へ向きが変わります。TURNが3のとき、編集部の車は約2.5秒で90度回りました。次の道の先が正面に見えたらDキーを離し、もう一度Wキーで走ります。走っているうちに少しずつ道の端へずれていったら、DキーかAキーを短く押して向きを直します。
2つ目の角を曲がると、正面に黄色いチェックポイントが見えます。そのまま通り抜けます。下の画像は、テストでチェックポイント(赤い枠)の手前まで走ったところです。

さらにコースを回って白いゴールの線を通ると、右上の周回数が1になり、ベストに1周の秒数が出ます。出力にも「(アカウント名) 1周 〇 秒」と出ます。2周目からは、前より速く走れたときだけベストが書きかわります。下の画像は、テストでチェックポイントを通ってからゴールの線を通ったところです。右上の一覧(画像の1)の周回数が1、ベストが121.5になり、出力に「1周 121.5 秒」(画像の2)と出ました。

編集部は角ごとに止まって向きを確かめながら走ったので、1周に121.5秒かかりました。続けて走った2周目は178.4秒で、ベストは121.5のまま変わりませんでした。3周目は角で止まらずに走って64.6秒になり、ベストが64.6に書きかわりました。確かめたら、Shift + F5キーでテストを停止します。
うまく動かないときの直し方
| こまったこと | 確かめる場所 | 直し方 |
|---|---|---|
| 車が動かない | body_geom の CanCollide・Massless・Anchored | CanCollide を外し、Massless にチェックを入れ、Anchored のチェックが外れているか確かめる |
| AIの車体が置いていかれる | WeldConstraint | Part0 が body_geom、Part1 が Chassis になっているか |
| ゴールを通っても「スタート!」と出ない | FinishLine の名前と CanTouch | 名前が「FinishLine」か、CanTouch にチェックが入っているか |
| 1周しても周回数が増えない | Checkpoint | チェックポイントを通ってからゴールを通ったか。Checkpoint の名前が正しいか |
| Dキーで左へ曲がる | DriveScript の turn の行 | local turn = -seat.SteerFloat * TURN になっているか(SteerFloatの前にマイナスが付いているか) |
| 角で曲がりすぎて道から外れる | DriveScript の TURN | 7節のTURNを3にしたコードに貼りかえたか。角ではWキーを離して止まってから、Dキーで向きを変える |
| 右上に一覧が出ない | キーボードと出力 | Tabキーで表示を切りかえる。出力に「Infinite yield」と出ていたら、FinishLine・Checkpoint・Chassis・DriverSeat の名前を確かめる |
| 移動ツールやコマンドで車を線の上に置いても数えない | 動かし方 | 車を走らせて線を通る(触れたことは、部品が動いて当たったときに分かる) |
もっとレースらしくする工夫
| 足すもの | やり方の例 |
|---|---|
| コースのはみ出し防止 | 道路の外側に、低い壁のパーツを並べる |
| カウントダウン | 「3・2・1」の文字を画面に出してから、運転席に座れるようにする |
| もう1台の車 | 車を複製するだけでは動かない(DriveScript と LapManager が「Chassis」という名前の1台だけを探すため)。AIに相談して、車ごとに名前を変える形にする |
| ベストタイムの保存 | 抜けても残るように、DataStoreに保存する |
AIに相談するときの伝え方
足したいしかけを、今の部品の名前と一緒に伝えます。
Roblox Studioでレースゲームを作っています。
ServerScriptServiceのLapManagerで、FinishLineとCheckpointという板を車体(Chassis)が通ると、周回数とベストタイムをleaderstatsに出しています。
3周したらゴールにして、その人の画面に「ゴール! タイム 〇秒」と大きく出す方法を教えてください。
よくある質問
AIで作った車体のタイヤが回らないのはなぜ?
この記事では部品名を body だけにしたので、見本の絵にあったタイヤも車体と一体の1つの形(メッシュ)になりました。回るしくみは、走る車の見えないタイヤに任せています。Robloxの公式の説明では、部品名にタイヤの名前を残すと、タイヤを別の部品に分けて作れます(1つのモデルは8部品まで)。
友だちと一緒に走れる?
この記事の車は1台なので、1人ずつです。車を複製すると2台になりますが、DriveScript と LapManager はどちらも「Chassis」という名前の部品を1つだけ探すので、そのままでは2台目が正しく動きません。車ごとに名前を変え、スクリプトもその名前に合わせて直す必要があります。
次は、重みつきの抽選で、確率を看板に出すガチャを作ります。次のステップ(上級 13/42)
次に知りたいことを選ぶ
- 次のステップ:重みつきの抽選で、確率を看板に出すガチャを作ります → ロブロックス(Roblox)スタジオでガチャを作る方法
- 車の作り方をおさらいしたい → 車の作り方
- AIでほかのモデルも作りたい → モデルの作り方
- チェックポイントのしくみを知りたい → チェックポイントの作り方











