「ロブロックスで空を飛べる飛行機を作りたい」「配布の飛行機ではなく、自分で一から作ってみたい」
ロブロックス(Roblox)スタジオで、座って操縦できる飛行機の作り方を、実際の画像付きで誰でも簡単に分かるように解説します。配布モデルは使わず、「+」で入れた部品だけで作ります。滑走路を走って浮き上がり、傾きながら曲がり、遅くすると下りて着地するところまで動かします。
上級ステップ18/40 前の記事:ロブロックス(Roblox)スタジオの電車の作り方 全体の順番を見る
使うもの:Roblox Studioが起動するパソコン、マウス、キーボード。座って操作する席(VehicleSeat)は車の作り方と電車の作り方でも使いました。
先に答え
| 知りたいこと | 答え |
|---|---|
| どうやって前に進む? | 胴体に入れた LinearVelocity(決めた速さで動かし続ける部品)に、スクリプトが毎回「進む向きと速さ」を入れる |
| どうやって向きを変える? | 胴体に入れた AlignOrientation(決めた向きに回す部品)に、スクリプトが「向きたい向き」を入れる |
| どうやって操縦する? | 座席の VehicleSeat に座ってWキーで速く、Sキーで遅く、Aキー・Dキーで左右に曲がる |
| どうやって浮き上がる? | 速さが40以上になると機首を上げて上昇する。40より遅くすると、ゆっくり下りて着地する |
今回の完成状態:座席に座ってWキーを押すと、滑走路を走って浮き上がります。下の画像のように、Aキー・Dキーで機体を傾けながら曲がれれば成功です。

作るものと流れ
| 名前 | 種類 | 置く場所 | 役目 |
|---|---|---|---|
| Runway | Part | Workspace | 滑走路 |
| Plane | Model | Workspace | 飛行機をまとめる入れ物 |
| Body | Part | Planeの中 | 胴体。進める部品と向きを変える部品を入れる |
| Wings・Tail | Part | Planeの中 | 主翼と尾翼 |
| DriverSeat | VehicleSeat | Planeの中 | 座席。座るとW・A・S・Dキーで操縦できる |
| WeldConstraint | WeldConstraint | Wings・Tail・DriverSeatの中に1つずつ | その部品を胴体にくっつける |
| FlyAttachment | Attachment | Bodyの中 | 2つの部品が力をかける場所の印 |
| Thrust | LinearVelocity | Bodyの中 | 飛行機を、決めた向きと速さで動かす |
| Steer | AlignOrientation | Bodyの中 | 飛行機を、決めた向きに回す |
| FlyScript | Script | Planeの中 | 座席の操作を見て、速さと向きを毎回決める |
1. 滑走路を作る
新しいBaseplateを開きます。エクスプローラの「Workspace」にマウスを乗せて、右に出る「+」を押します(赤い枠)。

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

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

続けてRunwayを選んだまま、次の4つのプロパティを1つずつ変えます。
| プロパティ | 値 | 理由 |
|---|---|---|
| Size | 24, 1, 240 | 幅24、長さ240スタッドの滑走路にする |
| Position(▼CFrameのすぐ下) | 0, 0.5, -140 | スタートの台の前から奥へのばす |
| Color | 70, 70, 70 | 濃い灰色にする(BrickColorは「Dark taupe」になる) |
| Anchored | チェックを入れる | 滑走路が動かないように固定する |
- プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「24, 1, 240」と入れてEnterキーを押します(下の1枚目)
- 検索欄に「Position」と入れ、3つ並ぶうちのいちばん上、「▼CFrame」のすぐ下のPositionに「0, 0.5, -140」と入れてEnterキーを押します(下の2枚目)
- 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「70, 70, 70」と入れ、Enterキーを押します(下の3枚目)
- 検索欄に「Anchored」と入れ、右の四角を押してチェックを入れます(下の4枚目)
2. 飛行機の形を作る
飛行機の入れ物(Plane)
- エクスプローラの「Workspace」にマウスを乗せて「+」を押し、一覧の検索欄に「Model」と入れて「Model」を押します(下の1枚目)
- エクスプローラでModelを選んだままF2キーを押し、名前を「Plane」に変えます(下の2枚目)
胴体(Body)
| プロパティ | 値 | 理由 |
|---|---|---|
| Size | 4, 3, 14 | 前後に長い胴体にする |
| Position(▼CFrameのすぐ下) | 0, 3, -40 | 滑走路の上に置く |
| Color | 240, 240, 240 | 白にする(BrickColorは「White」になる) |
| Anchored | チェックを外したまま | 固定すると飛ばない(「+」で入れたときは外れている) |
- エクスプローラの「Plane」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
- エクスプローラでPartを選んだままF2キーを押し、名前を「Body」に変えます(下の2枚目)
- Bodyを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「4, 3, 14」と入れてEnterキーを押します(下の3枚目)
- 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 3, -40」と入れてEnterキーを押します(下の4枚目)
- 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「240, 240, 240」と入れ、Enterキーを押します(下の5枚目)
- 検索欄に「Anchored」と入れ、チェックが外れていることを確かめます(下の6枚目)
主翼(Wings)
| プロパティ | 値 | 理由 |
|---|---|---|
| Size | 24, 0.6, 5 | 左右に長い、うすい翼にする |
| Position(▼CFrameのすぐ下) | 0, 3.5, -41 | 胴体のまん中より少し前に、横向きに通す |
| Color | 0, 90, 200 | 青にする(BrickColorは「Deep blue」になる) |
| Anchored | チェックを外したまま | 胴体といっしょに飛ばすため |
- エクスプローラの「Plane」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
- エクスプローラでPartを選んだままF2キーを押し、名前を「Wings」に変えます(下の2枚目)
- Wingsを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「24, 0.6, 5」と入れてEnterキーを押します(下の3枚目)
- 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 3.5, -41」と入れてEnterキーを押します(下の4枚目)
- 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「0, 90, 200」と入れ、Enterキーを押します(下の5枚目)。Anchoredは外れたままです
尾翼(Tail)
| プロパティ | 値 | 理由 |
|---|---|---|
| Size | 0.6, 4, 3 | 縦に立つ、うすい板にする |
| Position(▼CFrameのすぐ下) | 0, 6.5, -34.5 | 胴体の後ろのはしの上に立てる |
| Color | 0, 90, 200 | 主翼と同じ青にする(BrickColorは「Deep blue」になる) |
| Anchored | チェックを外したまま | 胴体といっしょに飛ばすため |
- エクスプローラの「Plane」にマウスを乗せて「+」を押し、一覧の検索欄に「Part」と入れて「Part」を押します(下の1枚目)
- エクスプローラでPartを選んだままF2キーを押し、名前を「Tail」に変えます(下の2枚目)
- Tailを選んだまま、プロパティの検索欄に「Size」と入れ、名前がちょうど「Size」の欄に「0.6, 4, 3」と入れてEnterキーを押します(下の3枚目)
- 検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 6.5, -34.5」と入れてEnterキーを押します(下の4枚目)
- 検索欄に「Color」と入れ、名前がちょうど「Color」の欄の右の数字を押して「0, 90, 200」と入れ、Enterキーを押します(下の5枚目)。Anchoredは外れたままです
座席(DriverSeat)
| プロパティ | 値 | 理由 |
|---|---|---|
| Position(▼CFrameのすぐ下) | 0, 5, -42 | 胴体の上の、主翼のあたりに乗せる |
座席の向きは変えません。「+」で入れたVehicleSeatは、座った人が胴体の前(滑走路の奥)を向く向きで入ります。
- エクスプローラの「Plane」にマウスを乗せて「+」を押し、一覧の検索欄に「VehicleSeat」と入れて「VehicleSeat」を押します(下の1枚目)
- エクスプローラでVehicleSeatを選んだままF2キーを押し、名前を「DriverSeat」に変えます(下の2枚目)
- DriverSeatを選んだまま、プロパティの検索欄に「Position」と入れ、「▼CFrame」のすぐ下のPositionに「0, 5, -42」と入れてEnterキーを押します(下の3枚目)
3. 翼と座席を胴体にくっつける
主翼・尾翼・座席は、それぞれWeldConstraint(2つの部品をくっつける部品)で胴体につなぎます。WeldConstraintは、Part0とPart1に入れた2つの部品を、今の位置のまま1つの物のように動かします。
主翼をくっつける
- エクスプローラの「Wings」にマウスを乗せて「+」を押し、一覧の検索欄に「WeldConstraint」と入れて「WeldConstraint」を押します(下の1枚目)
- エクスプローラでWeldConstraintを選んだまま、プロパティの検索欄に「Part0」と入れます。右の空の欄を押してから、エクスプローラの「Wings」を押します(下の2枚目)
- 検索欄に「Part1」と入れ、右の空の欄を押してから、エクスプローラの「Body」を押します(下の3枚目)
尾翼をくっつける
- エクスプローラの「Tail」にマウスを乗せて「+」を押し、一覧の検索欄に「WeldConstraint」と入れて「WeldConstraint」を押します(下の1枚目)
- エクスプローラでTailの中のWeldConstraintを選んだまま、プロパティの検索欄に「Part0」と入れます。右の空の欄を押してから、エクスプローラの「Tail」を押します(下の2枚目)
- 検索欄に「Part1」と入れ、右の空の欄を押してから、エクスプローラの「Body」を押します(下の3枚目)
座席をくっつける
- エクスプローラの「DriverSeat」にマウスを乗せて「+」を押し、一覧の検索欄に「WeldConstraint」と入れて「WeldConstraint」を押します(下の1枚目)
- エクスプローラでDriverSeatの中のWeldConstraintを選んだまま、プロパティの検索欄に「Part0」と入れます。右の空の欄を押してから、エクスプローラの「DriverSeat」を押します(下の2枚目)
- 検索欄に「Part1」と入れ、右の空の欄を押してから、エクスプローラの「Body」を押します(下の3枚目)
4. 進める部品と向きを変える部品を入れる
胴体に印(FlyAttachment)を入れ、その印に、飛行機を進める部品と向きを変える部品をつなぎます。
- LinearVelocityは、つないだ部品を決めた速さで動かし続けるように力をかけます(Robloxの公式の説明による働きです)
- AlignOrientationは、つないだ印の向きを、決めた向きにそろえるように回します(Robloxの公式の説明による働きです)
どちらも「どの向きに、どれだけの速さで」「どちらを向くか」はスクリプトが毎回入れます。
力をかける印(FlyAttachment)
- エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「Attachment」と入れて「Attachment」を押します(下の1枚目)
- エクスプローラでAttachmentを選んだままF2キーを押し、名前を「FlyAttachment」に変えます(下の2枚目)。Positionは「0, 0, 0」のまま変えません
進める部品(Thrust)
| プロパティ | 値 | 理由 |
|---|---|---|
| Attachment0 | FlyAttachment | 胴体の印に力をかける |
| MaxForce | 1000000 | 押す力の上限。入れたときは1000になっている |
- エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「LinearVelocity」と入れて「LinearVelocity」を押します(下の1枚目)
- エクスプローラでLinearVelocityを選んだままF2キーを押し、名前を「Thrust」に変えます(下の2枚目)
- Thrustを選んだまま、プロパティの検索欄に「Attachment0」と入れます。右の空の欄を押してから、エクスプローラのBodyの中の「FlyAttachment」を押します(下の3枚目)
- 検索欄に「MaxForce」と入れ、右の欄に「1000000」と入れてEnterキーを押します(下の4枚目)
向きを変える部品(Steer)
| プロパティ | 値 | 理由 |
|---|---|---|
| Mode | OneAttachment(一覧から選ぶ) | 印1つだけを、スクリプトが決めた向きにそろえる |
| Attachment0 | FlyAttachment | 胴体の印を回す |
| MaxTorque | 1000000 | 回す力の上限 |
| Responsiveness | 20 | 決めた向きに回る早さ。公式の説明では5から200まで入れられる |
- エクスプローラの「Body」にマウスを乗せて「+」を押し、一覧の検索欄に「AlignOrientation」と入れて「AlignOrientation」を押します(下の1枚目)
- エクスプローラでAlignOrientationを選んだままF2キーを押し、名前を「Steer」に変えます(下の2枚目)
- Steerを選んだまま、プロパティの検索欄に「Mode」と入れ、右の「TwoAttachment」を押して開く一覧から「OneAttachment」を押します(下の3枚目)
- 検索欄に「Attachment0」と入れます。右の空の欄を押してから、エクスプローラのBodyの中の「FlyAttachment」を押します(下の4枚目)
- 検索欄に「MaxTorque」と入れ、右の欄に「1000000」と入れてEnterキーを押します(下の5枚目)
- 検索欄に「Responsiveness」と入れ、右の欄に「20」と入れてEnterキーを押します(下の6枚目)
5. 操縦のスクリプトを入れる
FlyScript
- エクスプローラの「Plane」にマウスを乗せて「+」を押し、一覧の検索欄に「Script」と入れて「Script」を押します(下の1枚目)
- エクスプローラでScriptを選んだままF2キーを押し、名前を「FlyScript」に変えます(下の2枚目)
- FlyScriptを選んだまま、プロパティの検索欄に「RunContext」と入れ、「Legacy」になっていることを確かめます(下の3枚目)。RunContextはスクリプトが動く場所の設定で、Workspaceの中のScriptはLegacyのままでサーバーで動きます
3D画面の上のタブ「FlyScript」を押して、スクリプトの画面を出します。中身を全部消して、次のコードを貼り付けます(コードの画面の中を押してからCtrl + Aキーで全部選び、Deleteキーで消します)。
-- 飛行機を飛ばすスクリプト
local plane = script.Parent
local body = plane:WaitForChild("Body")
local seat = plane:WaitForChild("DriverSeat")
local thrust = body:WaitForChild("Thrust")
local steer = body:WaitForChild("Steer")
local MAX_SPEED = 60 -- いちばん速いときの速さ
local ACCEL = 10 -- 1秒ごとに速くなる量
local TAKEOFF_SPEED = 40 -- この速さをこえると浮き上がる
local TURN_SPEED = math.rad(45) -- 1秒に曲がる角度
local CLIMB_ANGLE = math.rad(12) -- 上がるときの機首の角度
local MAX_HEIGHT = 60 -- これより高くは上がらない
local SINK_SPEED = 6 -- 遅くしたときに下りる速さ
local speed = 0
local _, yaw, _ = body.CFrame:ToOrientation()
local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = { plane }
rayParams.FilterType = Enum.RaycastFilterType.Exclude
game:GetService("RunService").Heartbeat:Connect(function(dt)
speed = math.clamp(speed + seat.ThrottleFloat * ACCEL * dt, 0, MAX_SPEED)
local onGround = workspace:Raycast(body.Position, Vector3.new(0, -4, 0), rayParams) ~= nil
if speed > 10 then
yaw = yaw - seat.SteerFloat * TURN_SPEED * dt
end
local turnCFrame = CFrame.Angles(0, yaw, 0)
local pitch = 0
local roll = 0
local velocity
if speed >= TAKEOFF_SPEED then
if body.Position.Y < MAX_HEIGHT then
pitch = CLIMB_ANGLE
end
roll = -seat.SteerFloat * math.rad(25)
velocity = (turnCFrame * CFrame.Angles(pitch, 0, 0)).LookVector * speed
elseif onGround then
velocity = turnCFrame.LookVector * speed + Vector3.new(0, -2, 0)
else
pitch = -math.rad(8)
velocity = turnCFrame.LookVector * speed + Vector3.new(0, -SINK_SPEED, 0)
end
steer.CFrame = turnCFrame * CFrame.Angles(pitch, 0, roll)
thrust.VectorVelocity = velocity
end)

| コードの部分 | していること |
|---|---|
seat.ThrottleFloat | 座席でWキーを押すと1、Sキーで-1、何もしないと0になる数。speed を少しずつ変える。speedは0より小さくならないので、Sキーを押し続けても後ろへは進まない |
seat.SteerFloat | Dキーで1、Aキーで-1、何もしないと0になる数。yaw(左右の向き)を少しずつ変える |
TURN_SPEED | 1秒に曲がる角度。TURN_SPEEDで決めた45度を8秒続けると、1周する |
if speed > 10 then | 速さが10以下のときは、Aキー・Dキーを押しても曲がらない |
MAX_SPEED | いちばん速いときの速さ。MAX_SPEEDで決めた60は、1秒に60スタッド進む速さ |
ACCEL | 1秒ごとに速さが変わる量。ACCELで決めた10なら、止まった状態から4秒で40になる |
TAKEOFF_SPEED | TAKEOFF_SPEEDで決めた40以上になると、機首をCLIMB_ANGLEで決めた12度上げて上昇する |
MAX_HEIGHT | 胴体の高さが、MAX_HEIGHTで決めた60より上になると、上昇をやめてまっすぐ飛ぶ |
SINK_SPEED | TAKEOFF_SPEEDより遅く、地面の上にいないとき、SINK_SPEEDで決めた6スタッドずつ1秒に下りる |
onGround | 胴体の真下4スタッド以内に何かがあるか。地面の上にいるかどうかを見る |
steer.CFrame | Steer(AlignOrientation)が向く向き。左右の向き・機首の上げ下げ・傾きを入れる |
thrust.VectorVelocity | Thrust(LinearVelocity)で動かす向きと速さ |
game:GetService("RunService").Heartbeat | 1秒に何十回も、くり返し中の処理を行う。dt は前の回からの時間(秒) |
6. テストで飛ばす
座席に座る
3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでテストを始めます(タブの名前はパソコンによって違います)。
座席は胴体の上にあるので、胴体に乗ってから座席に触れます。
- Wキーを押して、飛行機の後ろまで歩きます(下の1枚目)
- 尾翼の横に立ち、Spaceキーでジャンプして胴体の上に乗ります(下の2枚目)。尾翼は胴体のまん中に立っているので、少し右か左にずれてからジャンプします
- 胴体の上でWキーを押して前へ歩き、座席に触れると座れます。座ると、画面の下に「速度」の表示が出ます(下の3枚目)
3枚目は、座席に向かって歩いたWキーで少し進み、速度が2になっています。ジャンプしても胴体に乗れなかったり、座席の上に立ってしまったりしたときは、いったん下りてやり直します。座席の上に立っても座れません。胴体の上を歩いて、座席の後ろから触れると座れます。
離陸して曲がる
Wキーを押し続けると、滑走路を走って速くなります(下の1枚目)。速さが40以上になると、機首が上がって浮き上がります(下の2枚目)。そのまま上昇を続けます(下の3枚目)。
空を飛んでいるあいだにAキーを押すと、機体が左に傾きながら左へ曲がります。Dキーなら右です。指を離すと傾きがもどり、まっすぐ飛びます。

以下は、アソビシフト編集部が試した結果です。Wキーを押し続けると、速度の表示は60で止まりました。高さは、MAX_HEIGHTで決めた60を少しこえた所で上昇をやめ、まっすぐ飛び続けました。Aキーを8秒押し続けると、ほぼ1周して元の向きに戻りました。TURN_SPEEDで決めた1秒に45度を8秒続けると、360度になるためです。
着地する
Sキーを押して速さを40より遅くすると、機首が少し下がり、ゆっくり下りていきます(下の1枚目)。地面に着くと、そのまま滑走路や地面の上を走ります(下の2枚目)。止まるときは、Sキーを押し続けて速度を0にします。Sキーを押し続けても、後ろへは進みません。
以下は、アソビシフト編集部が試した結果です。Wキーで上昇してからAキーで半周し、Sキーで速度を30ほどに下げると、少しずつ下りて地面に着き、速度30前後のまま地面の上を走りました。
地面(Baseplate)の外へ出ると、下に何もないので着地できず、遅くしても下り続けます。編集部の試しでも、まっすぐ飛び続けると地面の外へ出て、下り続けました。遠くまで行ったら、Aキー・Dキーで曲がって戻ってから下ります。地面の外へ落ちたときは、Shift + F5キーでテストを停止します。3D画面の上の作品のタブ「Place1」を押して3D画面に戻り、F5キーでもう一度テストを始めます(タブの名前はパソコンによって違います)。
確かめ終わったら、Shift + F5キーでテストを停止します。
7. 完成した飛行機
テストを止めたあとの3D画面です。胴体の上に座席、横に主翼、後ろに尾翼が付いています。

8. 飛行機が飛ばないときに確かめる所
以下は、アソビシフト編集部がわざと設定を変えて、座席に座ってWキーを6秒押し続けたときの結果です。正しく作った飛行機は、同じ操作で浮き上がりました。この節は読むだけで大丈夫です。
| 変えた所 | 結果 | 直し方 |
|---|---|---|
| BodyのAnchoredにチェックを入れた | 座れるが、速度は0のままで動かない | エクスプローラでPlaneの中のBodyを選び、プロパティの検索欄に「Anchored」と入れてチェックを外す |
| Bodyの中のThrustのMaxForceを、入れたときの1000のままにした | 座れるが、速度は0のままで動かない | エクスプローラでBodyの中のThrustを選び、プロパティの検索欄に「MaxForce」と入れ、右の欄に「1000000」と入れてEnterキーを押す |
| Bodyの中のSteerのAttachment0を空にした | 浮き上がるが、機体が横倒しになって回ってしまう | エクスプローラでBodyの中のSteerを選び、プロパティの検索欄に「Attachment0」と入れ、右の欄を押してからBodyの中の「FlyAttachment」を押す |
試したあとは、どれも表の直し方のとおりに戻しています。
AIに相談するときの伝え方
Roblox Studioで飛行機を作っています。
Plane(Model)の中の Body に Attachment(FlyAttachment)を入れ、LinearVelocity(Thrust)と、Mode が OneAttachment の AlignOrientation(Steer)をつないでいます。
Plane の中の Script で VehicleSeat の ThrottleFloat と SteerFloat を見て、Thrust.VectorVelocity と Steer.CFrame を毎回変えています。速さが40をこえると上昇します。
Qキー・Eキーで機首を上げ下げできるようにしたいです。どう書き足せばよいですか。
よくある質問
速さを変えたいときは?
エクスプローラでPlaneの中の「FlyScript」をダブルクリックして開き、コードの8行目の MAX_SPEED の「60」を書きかえます。浮き上がる速さは、コードの10行目の TAKEOFF_SPEED の「40」で決まります。
もっと高く飛ばしたいときは?
エクスプローラでPlaneの中の「FlyScript」をダブルクリックして開き、コードの13行目の MAX_HEIGHT の「60」を大きくします。下りる速さは、コードの14行目の SINK_SPEED の「6」で決まります。1秒に6スタッドずつ下りるので、高くするほど着地までに時間がかかります。
次は、ロープで荷物を吊って上げ下げし、ブランコとばねのトランポリンを作ります。次のステップ(上級 19/40)
次に知りたいことを選ぶ
- 次のステップ:ロープで荷物を吊って上げ下げし、ブランコとばねのトランポリンを作ります → ロブロックス(Roblox)スタジオのロープの作り方
- 線路の上を走る乗り物を作りたい → ロブロックス(Roblox)スタジオの電車の作り方
- 地面を自由に走る車を作りたい → ロブロックス(Roblox)スタジオの車の作り方
- 同じ処理を1つにまとめたい → ロブロックス(Roblox)のモジュールスクリプトの使い方



























































