ロブロックス(Roblox)スタジオの電車の作り方|線路・連結・踏切まで脱線しない電車を画像で解説

制作手順難易度: 上級所要時間: 約90分(目安)情報確認日: 2026年10月29日

「ロブロックスで電車を作りたいけど、線路から外れたり、動かなかったりする」「配布の電車ではなく、自分で作ってみたい」

ロブロックス(Roblox)スタジオで、線路から外れない電車の作り方を、実際の画像付きで誰でも簡単に分かるように解説します。配布モデルは使わず、「+」で入れた部品だけで、線路・運転席・2両目の連結・駅のホーム・踏切まで作ります。

上級ステップ17/40 前の記事:ロブロックス(Roblox)のモジュールスクリプト(ModuleScript)の使い方 全体の順番を見る

使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。座って運転する仕組み(VehicleSeat)は車の作り方、部品を動かす仕組み(コンストレイント)はエレベーターの作り方でも解説しています。

先に答え

知りたいこと答え
線路から外れない電車は?線路と車体を PrismaticConstraint(決まった1本の向きにだけすべらせる部品)でつなぐ。車体は線路に沿ってしか動かない
どうやって運転する?運転席の VehicleSeat に座ってWキー・Sキー。スクリプトが PrismaticConstraint の速さを少しずつ変える
連結は?2両目も線路とつなぎ、1両目と RodConstraint(長さの決まった棒)でつなぐ
踏切は?遮断機の棒を HingeConstraint(回す部品)で柱に付け、電車が近づいたらスクリプトで下ろす

今回の完成状態:運転席に座ってWキーを押すと電車が走ります。下の画像のように踏切に近づくと遮断機が下り、駅のホームの横で止まれば成功です。

作るものと流れ

名前種類置く場所役目
BallastPartWorkspace線路の土台(砂利)。電車をつなぐ印(TrackAttachment)を入れる
RailL・RailRPartWorkspace左右のレール(見た目)
TrainModelWorkspace電車をまとめる入れ物
BodyPartTrainの中1両目の車体。線路とつなぐTrackSliderを入れる
DriverSeatVehicleSeatTrainの中運転席。座るとWキー・Sキーで運転できる
TrainScriptScriptTrainの中運転席の操作で電車の速さを変える
Car2PartTrainの中2両目。BodyとCouplerでつなぐ
PlatformPartWorkspace駅のホーム
CrossingModelWorkspace踏切(道路・柱・遮断機・ランプ・CrossingScript)

1. 線路を作る

線路の土台(Ballast)

新しいBaseplateを開きます。エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

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

Workspaceの中にPartが入ります。エクスプローラでPartを選んだままF2キーを押し、名前を「Ballast」に変えます(赤い枠)。

続けてBallastを選んだまま、次の5つのプロパティを1つずつ変えます。

プロパティ値理由
Size200, 1, 10長さ200スタッドの線路の土台にする
Position(▼CFrameのすぐ下)0, 0.5, -20スタートの台の前に、地面に乗せて置く
Color110, 100, 90砂利の色にする
MaterialSlate(一覧から選ぶ)ざらざらした石に見せる
Anchoredチェックを入れる線路が動かないように固定する
  1. プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「200, 1, 10」と入れてEnterキーを押します(下の1枚目)
  2. 検索欄に「Position」と入れ、3つ並ぶうちのいちばん上、「▼CFrame」のすぐ下のPositionに「0, 0.5, -20」と入れてEnterキーを押します(下の2枚目)
  3. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「110, 100, 90」と入れ、Enterキーを押します(下の3枚目)
  4. 検索欄に「Material」と入れ、右の「Plastic」を押して開く一覧から「Slate」を押します(下の4枚目)
  5. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の5枚目)

左のレール(RailL)

「+」から部品を入れる操作は、Ballastのときと同じです。

プロパティ値理由
Size200, 0.6, 0.6線路と同じ長さの細い棒にする
Position(▼CFrameのすぐ下)0, 1.3, -22土台の上の、奥の側に置く
Color150, 150, 150灰色にする
MaterialMetal(一覧から選ぶ)金属に見せる
Anchoredチェックを入れる固定する
  1. エクスプローラの「Workspace」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「RailL」に変えます(下の1枚目)
  3. RailLを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「200, 0.6, 0.6」と入れてEnterキーを押します(下の2枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 1.3, -22」と入れてEnterキーを押します(下の3枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「150, 150, 150」と入れ、Enterキーを押します(下の4枚目)
  6. 検索欄に「Material」と入れ、右の「Plastic」を押して開く一覧から「Metal」を押します(下の5枚目)
  7. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の6枚目)

右のレール(RailR)

右のレールは、RailLを複製して作ります。変えるのは次の2つです。

変える所値
名前RailR
Position(▼CFrameのすぐ下)0, 1.3, -18
  1. エクスプローラで「RailL」を押して選び、Ctrl + Dキーを押します。同じ場所に複製ができ、複製したほうが選ばれた状態になります
  2. エクスプローラでそのままF2キーを押し、名前を「RailR」に変えます(下の1枚目)
  3. RailRを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 1.3, -18」と入れてEnterキーを押します(下の2枚目)

電車をつなぐ印(TrackAttachment)

電車を線路につなぐための印(Attachment)を、Ballastの中に入れます。

  1. エクスプローラの「Ballast」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の1枚目)
  2. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「TrackAttachment」に変えます(下の2枚目)
  3. TrackAttachmentを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 2.5, 0」と入れてEnterキーを押します(下の3枚目)

2. 電車の車体と運転席を作る

電車の入れ物(Train)

  1. エクスプローラの「Workspace」にマウスを乗せて「+」を押し、一覧の検索欄に「Model」と入れて「Model」を押します(下の1枚目)
  2. エクスプローラでModelを選んだままF2キーを押し、名前を「Train」に変えます(下の2枚目)

1両目の車体(Body)

プロパティ値理由
Size16, 1, 7長さ16スタッドの車体にする
Position(▼CFrameのすぐ下)-12, 3, -20線路の上に浮かべる
Color40, 120, 60緑色にする
Anchoredチェックを外したまま固定すると動かない(「+」で入れたときは外れている)
  1. エクスプローラの「Train」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「Body」に変えます(下の2枚目)
  3. Bodyを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「16, 1, 7」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「-12, 3, -20」と入れてEnterキーを押します(下の4枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「40, 120, 60」と入れ、Enterキーを押します(下の5枚目)
  6. 検索欄に「Anchored」と入れ、チェックが外れていることを確かめます(下の6枚目)

運転席(DriverSeat)

プロパティ値理由
Orientation(▼CFrameのすぐ下)0, -90, 0座った人が、電車の進む向きを向くようにする
Position(▼CFrameのすぐ下)-6, 4, -20車体の前のほうに乗せる
  1. エクスプローラの「Train」にマウスを乗せて「+」を押し、一覧の検索欄に「VehicleSeat」と入れて「VehicleSeat」を押します(下の1枚目)
  2. エクスプローラでVehicleSeatを選んだままF2キーを押し、名前を「DriverSeat」に変えます(下の2枚目)
  3. DriverSeatを選んだまま、プロパティの検索欄に「Orientation」と入れ、「▼CFrame」のすぐ下のOrientationに「0, -90, 0」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「-6, 4, -20」と入れてEnterキーを押します(下の4枚目)

運転席を車体にくっつける(WeldConstraint)

  1. エクスプローラの「DriverSeat」にマウスを乗せて「+」を押し、一覧の検索欄に「WeldConstraint」と入れて「WeldConstraint」を押します(下の1枚目)
  2. エクスプローラでWeldConstraintを選んだまま、プロパティの検索欄に「Part0」と入れます。右の空の欄を押してから、エクスプローラの「DriverSeat」を押します(下の2枚目)
  3. 検索欄に「Part1」と入れ、右の空の欄を押してから、エクスプローラの「Body」を押します(下の3枚目)

3. 線路に沿ってだけ動くようにする

ここが脱線しない電車のいちばん大事な所です。Bodyに印(SlideAttachment)を入れ、線路の印(TrackAttachment)とPrismaticConstraintでつなぎます。PrismaticConstraintは、つないだ2つの印を決まった1本の向きにだけすべらせ、回らないようにする部品です(Robloxの公式の説明に書かれている働きです)。

車体の印(SlideAttachment)

  1. エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の1枚目)
  2. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「SlideAttachment」に変えます(下の2枚目)。Positionは「0, 0, 0」のまま変えません

線路とつなぐ(TrackSlider)

プロパティ値理由
Attachment0TrackAttachment線路の印
Attachment1SlideAttachment車体の印
ActuatorTypeMotor(一覧から選ぶ)スクリプトで決めた速さで動かす
MotorMaxForce1000000電車を動かす力の上限。0だと動かない(8節)
LimitsEnabledチェックを入れる動ける範囲を決める
LowerLimit-90線路の左のはしの近くで止める
UpperLimit90線路の右のはし(駅)で止める
  1. エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「PrismaticConstraint」と入れて「PrismaticConstraint」を押します(下の1枚目)
  2. エクスプローラでPrismaticConstraintを選んだままF2キーを押し、名前を「TrackSlider」に変えます(下の2枚目)
  3. TrackSliderを選んだまま、プロパティの検索欄に「Attachment」と入れます。Attachment0の右の空の欄を押してから、エクスプローラで「Ballast」の左の「▶」を押して開き、中の「TrackAttachment」を押します(下の3枚目)
  4. Attachment1の右の空の欄を押してから、エクスプローラのBodyの中の「SlideAttachment」を押します(下の4枚目)
  5. 検索欄に「ActuatorType」と入れ、右の「None」を押して開く一覧から「Motor」を押します(下の5枚目)
  6. 検索欄に「MotorMaxForce」と入れ、右の欄に「1000000」と入れてEnterキーを押します(下の6枚目)
  7. 検索欄に「LimitsEnabled」と入れ、右の四角を押してチェックを入れます(下の7枚目)
  8. 検索欄に「Limit」と入れ、LowerLimitに「-90」と入れてEnterキーを押します(下の8枚目)
  9. 続けてUpperLimitに「90」と入れてEnterキーを押します(下の9枚目)

4. 運転のスクリプトを入れて走らせる

TrainScript

  1. エクスプローラの「Train」にマウスを乗せて「+」を押し、一覧の検索欄に「Script」と入れて「Script」を押します(下の1枚目)
  2. エクスプローラでScriptを選んだままF2キーを押し、名前を「TrainScript」に変えます(下の2枚目)

3D画面の上のタブ「TrainScript」を押して、スクリプトの画面を出します。中身を全部消して、次のコードを貼り付けます(コードの画面の中を押してからCtrl + Aキーで全部選び、Deleteキーで消します)。

local RunService = game:GetService("RunService")

local train = script.Parent
local seat = train:WaitForChild("DriverSeat")
local slider = train:WaitForChild("Body"):WaitForChild("TrackSlider")

local MAX_SPEED = 30 -- いちばん速いときの速さ(1秒に進むスタッド)
local ACCEL = 10 -- 1秒ごとに速さが変わる量(大きいほど、すぐ速くなる)

local speed = 0

RunService.Heartbeat:Connect(function(dt)
	-- W で 1、S で -1、何も押さないと 0
	local target = seat.ThrottleFloat * MAX_SPEED
	if speed < target then
		speed = math.min(speed + ACCEL * dt, target)
	elseif speed > target then
		speed = math.max(speed - ACCEL * dt, target)
	end
	slider.Velocity = speed
end)
コードの部分していること
seat.ThrottleFloat運転席で前に進む操作をすると1、後ろに進む操作で-1、何もしないと0に戻る数(-1から1までの数。Robloxの公式の説明による値です)
MAX_SPEEDいちばん速いときの速さ。MAX_SPEEDで決めた30は、1秒に30スタッド進む速さ
ACCEL1秒ごとに速さが変わる量。ACCELで決めた10なら、止まった状態から3秒で30になる
speed と target今の速さ(speed)を、目ざす速さ(target)に少しずつ近づける。急に止まったり急に走り出したりしない
slider.Velocity = speedTrackSliderの速さを変える。ActuatorTypeがMotorのとき、この速さで線路に沿って動く
RunService.Heartbeat1秒に何十回も、くり返し中の処理を行う。dt は前の回からの時間(秒)

テストで運転する

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。テストを始めてスタートの台から左前の運転席のほうへ歩き、運転席に触れると座れます。座ると、画面の下に「速度」の表示が出ます(赤い枠)。

以下は、アソビシフト編集部がWキーを押し続けて確かめた結果です。速度は9、18と少しずつ上がり、30より上には上がりませんでした。Sキーを押し続けると、遅くなって止まったあと、後ろへ走り出しました。

確かめ終わったら、Shift + F5キーでテストを停止します。

5. 2両目を連結する

2両目(Car2)

2両目は、Bodyを複製して作ります。中のSlideAttachmentとTrackSliderも一緒に複製されます。

変える所値理由
名前Car22両目
Position(▼CFrameのすぐ下)-30, 3, -201両目のうしろに置く
Car2の中のTrackSliderのActuatorTypeNone(一覧から選ぶ)2両目は自分では走らず、引っぱられて動く
  1. エクスプローラで「Body」を押して選び、Ctrl + Dキーを押します。複製したほうが選ばれた状態になります
  2. エクスプローラでそのままF2キーを押し、名前を「Car2」に変えます(下の1枚目)
  3. Car2を選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「-30, 3, -20」と入れてEnterキーを押します(下の2枚目)
  4. エクスプローラでCar2の左の「▶」を押して開き、中の「TrackSlider」を押して選びます。プロパティの検索欄に「ActuatorType」と入れ、右の「Motor」を押して開く一覧から「None」を押します(下の3枚目)
  5. Car2の中のTrackSliderを選んだまま、プロパティの検索欄に「Attachment」と入れ、Attachment0がTrackAttachment、Attachment1がSlideAttachmentになっていることを確かめます(下の4枚目)

つなぐ印(CouplerBack・CouplerFront)

  1. エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の1枚目)
  2. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「CouplerBack」に変えます(下の2枚目)
  3. CouplerBackを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「-8, 0, 0」と入れてEnterキーを押します(下の3枚目)。印が1両目のうしろのはしに動きます
  4. エクスプローラの「Car2」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の4枚目)
  5. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「CouplerFront」に変えます(下の5枚目)
  6. CouplerFrontを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「8, 0, 0」と入れてEnterキーを押します(下の6枚目)。印が2両目の前のはしに動きます

連結の棒(Coupler)

プロパティ値理由
Attachment0CouplerBack1両目のうしろ
Attachment1CouplerFront2両目の前
Length22つの車体のあいだを2スタッドに保つ
Visibleチェックを入れる棒が見えるようにする
Thickness0.4棒を太くして見やすくする
  1. エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「RodConstraint」と入れて「RodConstraint」を押します(下の1枚目)
  2. エクスプローラでRodConstraintを選んだままF2キーを押し、名前を「Coupler」に変えます(下の2枚目)
  3. Couplerを選んだまま、プロパティの検索欄に「Attachment」と入れます。Attachment0の右の空の欄を押してから、エクスプローラのBodyの中の「CouplerBack」を押します(下の3枚目)
  4. Attachment1の右の空の欄を押してから、エクスプローラのCar2の中の「CouplerFront」を押します(下の4枚目)。Car2が閉じているときは、左の「▶」を押して開きます
  5. 検索欄に「Length」と入れ、右の欄に「2」と入れてEnterキーを押します(下の5枚目)。つないだ直後は5になっています
  6. 検索欄に「Visible」と入れ、右の四角を押してチェックを入れます(下の6枚目)
  7. 検索欄に「Thickness」と入れ、右の欄に「0.4」と入れてEnterキーを押します(下の7枚目)。2つの車体のあいだに棒が見えます

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。以下は、アソビシフト編集部が運転席に座ってWキーを押し、2両目が一緒に走るか確かめた結果です。2両目は1両目に引っぱられて一緒に走りました。テスト中は、編集のときに作品のタブ「Place1」があった場所(3D画面のすぐ上の左はし)に、「クライアント」と「サーバー」の2つのタブが並びます(赤い枠)。

走ったあとに「サーバー」のタブを押すと、運転席からの画面が、上から斜めに見下ろす画面に切りかわります。下の画像がその画面です。2つの車体は棒(赤い枠)でつながったまま進んでいます。運転の画面に戻るときは「クライアント」のタブを押します。

確かめ終わったら、Shift + F5キーでテストを停止します。

6. 駅のホームを作る

電車は、TrackSliderのUpperLimitで決めた90の所で止まります。そこにホームを置きます。

プロパティ値理由
Size30, 3, 8長さ30スタッドのホームにする
Position(▼CFrameのすぐ下)85, 1.5, -11電車が止まる所の、線路の手前に置く
Color200, 200, 200明るい灰色にする
MaterialConcrete(一覧から選ぶ)コンクリートに見せる
Anchoredチェックを入れる固定する
  1. エクスプローラの「Workspace」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「Platform」に変えます(下の2枚目)
  3. Platformを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「30, 3, 8」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「85, 1.5, -11」と入れてEnterキーを押します(下の4枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「200, 200, 200」と入れ、Enterキーを押します(下の5枚目)
  6. 検索欄に「Material」と入れ、右の「Plastic」を押して開く一覧から「Concrete」を押します(下の6枚目)
  7. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の7枚目)

7. 踏切を作る

踏切の入れ物(Crossing)と道路(Road)

道路(Road)のプロパティ値理由
Size10, 0.2, 40線路を横切る長い道路にする
Position(▼CFrameのすぐ下)30, 0.1, -20線路のまん中より右に置く
Color60, 60, 60濃い灰色にする
Anchoredチェックを入れる固定する
  1. エクスプローラの「Workspace」にマウスを乗せて「+」を押し、一覧の検索欄に「Model」と入れて「Model」を押します(下の1枚目)
  2. エクスプローラでModelを選んだままF2キーを押し、名前を「Crossing」に変えます(下の2枚目)
  3. エクスプローラの「Crossing」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の3枚目)
  4. エクスプローラでPartを選んだままF2キーを押し、名前を「Road」に変えます(下の4枚目)
  5. Roadを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「10, 0.2, 40」と入れてEnterキーを押します(下の5枚目)
  6. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「30, 0.1, -20」と入れてEnterキーを押します(下の6枚目)。線路を横切る道路になります
  7. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「60, 60, 60」と入れ、Enterキーを押します(下の7枚目)
  8. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の8枚目)

柱(Pole)

プロパティ値理由
Size1, 8, 1細長い柱にする
Position(▼CFrameのすぐ下)24, 4, -10道路の左、線路の手前に立てる
Color240, 240, 240白にする
Anchoredチェックを入れる固定する
  1. エクスプローラの「Crossing」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「Pole」に変えます(下の2枚目)
  3. Poleを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「1, 8, 1」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「24, 4, -10」と入れてEnterキーを押します(下の4枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「240, 240, 240」と入れ、Enterキーを押します(下の5枚目)
  6. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の6枚目)

遮断機の棒(Bar)

遮断機の棒は回して動かすので、Anchoredのチェックは外したままにします。

プロパティ値理由
Size12, 0.6, 0.6道路の幅より長い棒にする
Position(▼CFrameのすぐ下)30, 7, -10柱の右、道路の上に横に置く
Color240, 200, 0黄色にする
CanCollideチェックを外す電車や人がぶつからないようにする
  1. エクスプローラの「Crossing」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「Bar」に変えます(下の2枚目)
  3. Barを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「12, 0.6, 0.6」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「30, 7, -10」と入れてEnterキーを押します(下の4枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「240, 200, 0」と入れ、Enterキーを押します(下の5枚目)
  6. 検索欄に「CanCollide」と入れ、2つ並ぶうちの上、名前がちょうど「CanCollide」の欄の右の四角を押してチェックを外します(下の6枚目)

赤いランプ(LightA・LightB)

LightAのプロパティ値理由
Size1, 1, 0.4小さな四角いランプにする
Position(▼CFrameのすぐ下)23.4, 6, -9.5柱の手前の面の左に付ける
Color80, 0, 0消えているときの暗い赤
MaterialNeon(一覧から選ぶ)光って見えるようにする
Anchoredチェックを入れる固定する

LightBはLightAを複製して作り、名前を「LightB」、Positionを「24.6, 6, -9.5」に変えます。

  1. エクスプローラの「Crossing」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
  2. エクスプローラでPartを選んだままF2キーを押し、名前を「LightA」に変えます(下の2枚目)
  3. LightAを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「1, 1, 0.4」と入れてEnterキーを押します(下の3枚目)
  4. 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「23.4, 6, -9.5」と入れてEnterキーを押します(下の4枚目)
  5. 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「80, 0, 0」と入れ、Enterキーを押します(下の5枚目)
  6. 検索欄に「Material」と入れ、右の「Plastic」を押して開く一覧から「Neon」を押します(下の6枚目)
  7. 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の7枚目)
  8. エクスプローラで「LightA」を押して選び、Ctrl + Dキーを押します。複製したほうが選ばれた状態になります
  9. エクスプローラでそのままF2キーを押し、名前を「LightB」に変えます(下の8枚目)
  10. LightBを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「24.6, 6, -9.5」と入れてEnterキーを押します(下の9枚目)。柱に2つのランプが並びます

遮断機を回す仕組み(GateHinge)

棒を柱にHingeConstraintでつなぎます。HingeConstraintは、つないだ2つの印を1本の軸のまわりに回す部品です(Robloxの公式の説明に書かれている働きです)。ActuatorTypeをServoにすると、TargetAngleで決めた角度まで回ります。

  1. エクスプローラの「Pole」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の1枚目)
  2. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「HingeAttachment」に変えます(下の2枚目)
  3. HingeAttachmentを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 3, 0」と入れてEnterキーを押します(下の3枚目)。柱の上のほうに印が動きます
  4. 検索欄に「Orientation」と入れ、「▼CFrame」のすぐ下のOrientationに「0, 90, 0」と入れてEnterキーを押します(下の4枚目)。回る軸を、道路と同じ向き(線路と直角の向き)にします。こうすると、横に長い棒が柱の所を支点に立ったり倒れたりします
  5. エクスプローラの「Bar」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の5枚目)
  6. エクスプローラでAttachmentを選んだままF2キーを押し、名前を「HingeAttachment」に変えます(下の6枚目)
  7. Barの中のHingeAttachmentを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「-6, 0, 0」と入れてEnterキーを押します(下の7枚目)。棒の柱の側のはしに印が動きます
  8. 検索欄に「Orientation」と入れ、「▼CFrame」のすぐ下のOrientationに「0, 90, 0」と入れてEnterキーを押します(下の8枚目)。柱の印と同じ向きにそろえます

続けて、HingeConstraintを入れます。

プロパティ値理由
Attachment0Poleの中のHingeAttachment柱の印
Attachment1Barの中のHingeAttachment棒の印
ActuatorTypeServo(一覧から選ぶ)決めた角度まで回す
ServoMaxTorque1000000棒を回す力の上限
AngularSpeed2回る速さ
TargetAngle-90棒を立てる角度。テストを始めると棒が立つ
  1. エクスプローラの「Bar」にマウスを乗せて「+」を押し、一覧の検索欄に「HingeConstraint」と入れて「HingeConstraint」を押します(下の1枚目)
  2. エクスプローラでHingeConstraintを選んだままF2キーを押し、名前を「GateHinge」に変えます(下の2枚目)
  3. GateHingeを選んだまま、プロパティの検索欄に「Attachment」と入れます。Attachment0の右の空の欄を押してから、エクスプローラで「Pole」の左の「▶」を押して開き、中の「HingeAttachment」を押します(下の3枚目)
  4. Attachment1の右の空の欄を押してから、エクスプローラのBarの中の「HingeAttachment」を押します(下の4枚目)
  5. 検索欄に「ActuatorType」と入れ、右の「None」を押して開く一覧から「Servo」を押します(下の5枚目)
  6. 検索欄に「ServoMaxTorque」と入れ、右の欄に「1000000」と入れてEnterキーを押します(下の6枚目)
  7. 検索欄に「AngularSpeed」と入れ、右の欄に「2」と入れてEnterキーを押します(下の7枚目)
  8. 検索欄に「TargetAngle」と入れ、右の欄に「-90」と入れてEnterキーを押します(下の8枚目)。編集の画面では棒は横のままで、テストを始めると立ちます

踏切のスクリプト(CrossingScript)

  1. エクスプローラの「Crossing」にマウスを乗せて「+」を押し、一覧の検索欄に「Script」と入れて「Script」を押します(下の1枚目)
  2. エクスプローラでScriptを選んだままF2キーを押し、名前を「CrossingScript」に変えます(下の2枚目)

3D画面の上のタブ「CrossingScript」を押して、スクリプトの画面を出します。中身を全部消して、次のコードを貼り付けます。

local crossing = script.Parent
local hinge = crossing:WaitForChild("Bar"):WaitForChild("GateHinge")
local lightA = crossing:WaitForChild("LightA")
local lightB = crossing:WaitForChild("LightB")
local road = crossing:WaitForChild("Road")
local trainBody = workspace:WaitForChild("Train"):WaitForChild("Body")

local NEAR = 35 -- 電車がこの距離(スタッド)より近いと、遮断機を下ろす
local ON = Color3.fromRGB(255, 0, 0) -- 光っているときの色
local OFF = Color3.fromRGB(80, 0, 0) -- 消えているときの色

local flip = false

while true do
	-- 電車と道路の、線路に沿った向き(X)の距離
	local distance = math.abs(trainBody.Position.X - road.Position.X)
	if distance < NEAR then
		hinge.TargetAngle = 0 -- 遮断機を下ろす
		flip = not flip
		lightA.Color = flip and ON or OFF
		lightB.Color = flip and OFF or ON
	else
		hinge.TargetAngle = -90 -- 遮断機を上げる
		lightA.Color = OFF
		lightB.Color = OFF
	end
	task.wait(0.5)
end

コードが長く1つの画面に入りきらないので、コードの画面を下まで動かし、最後が task.wait(0.5) と end になっているかも確かめます(下の2枚目)。

コードの部分していること
NEARNEARで決めた35スタッドより電車が近いと、遮断機を下ろす
trainBody.Position.X - road.Position.X電車の1両目と道路の、線路に沿った向きの距離。math.abs でマイナスを取る
hinge.TargetAngle = 0棒を横に倒して、遮断機を下ろす。-90 にすると立つ
flip = not flip0.5秒ごとに、どちらのランプを光らせるかを入れかえる。2つが交互に点滅する
task.wait(0.5)0.5秒待ってから、もう一度確かめる

テストで踏切を通る

3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。運転席に座ってWキーを押し続けます。以下は、アソビシフト編集部が試した結果です。

電車が踏切に近づくと、遮断機の棒が倒れ始めます(赤い枠)。1両目と道路の距離が、NEARで決めた35スタッドより短くなった所で倒れ始めます。電車は道路の42スタッド手前から走り出すので、走り出して少し進んだ所です。2つのランプは、0.5秒ごとにかわりばんこに赤く光ります。

下の画像は、電車が踏切を通るときに、5節と同じように「サーバー」のタブを押して見たものです。棒が横に下りて道路をふさぎ、ランプが赤く光っています(赤い枠)。

そのまま走ると、UpperLimitで決めた90の所で電車が止まり、ホームの横に着きます。Wキーを押していても速度の表示は0になります。

「サーバー」のタブを押すと、2両がホームの横に止まっているのが見えます。

確かめ終わったら、Shift + F5キーでテストを停止します。

8. 電車が動かないときに確かめる所

以下は、アソビシフト編集部がわざと設定を変えて、運転席に座ってWキーを押し続けたときの結果です。正しく作った電車は、同じ操作でホームの横まで進みました。この節は読むだけで大丈夫です。

変えた所結果直し方
BodyのAnchoredにチェックを入れた座れるが、速度は0のままで動かないエクスプローラでBodyを選び、プロパティの検索欄に「Anchored」と入れてチェックを外す
Bodyの中のTrackSliderのActuatorTypeをNoneにした座れるが、速度は0のままで動かないエクスプローラでBodyの中のTrackSliderを選び、プロパティの検索欄に「ActuatorType」と入れ、右の「None」を押して開く一覧から「Motor」を押す
Bodyの中のTrackSliderのMotorMaxForceを0にした座れるが、速度は0のままで動かないエクスプローラでBodyの中のTrackSliderを選び、プロパティの検索欄に「MotorMaxForce」と入れ、右の欄に「1000000」と入れてEnterキーを押す

試したあとは、どれも表の直し方のとおりに戻しています。

AIに相談するときの伝え方

Roblox Studioで電車を作っています。
線路の土台 Ballast の中の Attachment と、車体 Body の中の Attachment を PrismaticConstraint(名前 TrackSlider、ActuatorType Motor、LowerLimit -90、UpperLimit 90)でつなぎ、
Train の中の Script で VehicleSeat の ThrottleFloat を見て TrackSlider.Velocity を変えています。2両目は RodConstraint でつないでいます。
駅で5秒止まってから、また走り出すようにしたいです。どう書き足せばよいですか。

よくある質問

速さを変えたいときは?

エクスプローラでTrainの中の「TrainScript」をダブルクリックして開き、コードの7行目の MAX_SPEED の「30」を書きかえます。MAX_SPEEDは、いちばん速いときの速さです。速くなるまでの早さは、コードの8行目の ACCEL の「10」で決まります。ACCELで決めた10なら、止まった状態から3秒で30になります。

次のステップ(上級 18/40)

次は、座って操縦する飛行機を作り、離陸・旋回・着陸まで動かします。

→ ロブロックス(Roblox)スタジオの飛行機の作り方

次に知りたいことを選ぶ

次に読む記事