Tech Kids Grand Prix 2026に「Roblox賞」が新設!応募は9/30(水)まで
CreateR Nest
ブログ一覧へ
Roblox Studio

「もし〜なら」と「くり返し」をスクリプトで書こう

動作確認日: 2026年9月19日(Roblox Studio 0.739)

連載「ロブロックスで最初のゲームを作ろう」の第7回です。第1回から読む

第1回で、アシスタントに「すべての〜について」「もし〜なら」とたのむと、思ったとおりに動きました。今回は、この2つを自分でスクリプトに書きます。授業で使う場合、1回分の目安は60分です。

この回でできるようになること

  • 「もし〜なら」を、if で書く
  • 「出力」で、スクリプトの結果やエラーを見る
  • 「〜回くり返す」を、for で書く
  • 「すべての〜について」で、たくさんの足場にまとめて仕掛けをつける

はじめる前に:おうちの人と話そう

作ったゲームや、遊んだゲームのことを、おうちの人に話してみましょう。どんなものを作ったか、見せてあげるのもいいですね。

Robloxには、おうちの人が使える「保護者コントロール」があります。

  • だれとチャットできるか
  • どんなゲームで遊べるか
  • お金をいくらまで使えるか
  • 1日に何時間遊べるか

などを、おうちの人が決められます。ルールは、おうちの人といっしょに決めましょう。 いやなことや、こまったことがあったときも、まず話してください。

先生・保護者の方へ:保護者コントロール(2026年9月時点)

保護者コントロールを使うには、保護者権限のあるRobloxアカウントを、お子さまのアカウントに紐づけておく必要があります。紐づけたあとは、Robloxの「設定」の「保護者コントロール」から、次のようなことが決められます。

設定できること
コンテンツ制限遊べるゲームの成熟度を決める。ゲームを個別に許可・ブロックする
通信ゲーム内のチャットや友達とのチャットを、使えるようにするかどうか決める
プライベートサーバーお子さまが参加できる、招待制のサーバーを制限する
友達友達リストを確かめる。ブロックや報告もできる
支出制限Robuxの購入などに、毎月の上限を決める
スクリーン時間1日に遊べる時間の上限を決める。よく遊んでいるゲームも確かめられる

くわしい手順は、Roblox公式ヘルプの「保護者コントロールの概要」と「保護者の方へ:お子様のアカウントとの紐づけ方」にあります。

話し合いのヒント:「おうちの人と、ゲームのことをどれくらい話してる?」「いやなことがあったら、だれに話す?」と問いかけ、ネットの上のことも、大人と話してよいのだと伝えてください。

1. 前回の作品を開く

Studio を起動して、「最近使用したバーチャル空間」から、第6回で保存した作品を開きます。いちばん大きい番号のものです。

2. 「出力」を出しておく

今回は、「出力」という画面を使います。スクリプトからのメッセージが、1行ずつ出てくる画面です。スクリプトにまちがいがあるときも、ここに赤い文字で知らせてくれます。

  1. 上のリボンの「スクリプト」タブを押す
  2. 「出力」を押す。「コマンド」の右となりにあります

リボンの「スクリプト」タブ。「コマンド」の右となりに「出力」のボタンがある

画面のいちばん下に、「出力」が出てきます。メッセージは、時刻といっしょに1行ずつならびます。

画面の下に「出力」が出ている。左上に「すべてのメッセージ」「すべてのコンテキスト」の切りかえがある

開いたときから、Studio のお知らせが出ていることがあります。気にしなくて大丈夫です。

3. 「もし〜なら」— if

パーツとスクリプトを用意する

  1. 「パーツ」でブロックを出して、スタート地点の近くの見やすいところに置く
  2. 名前を LieDetector にする(右クリック →「名前を変更」)
  3. 「固定」を押す
  4. エクスプローラで LieDetector にマウスを乗せて「+」→「Script」を選ぶ
  5. できた Script の名前を FactChecker にする

LieDetector は「うそ発見器」、FactChecker は「本当かどうか調べる係」という意味です。

エクスプローラで、LieDetector の中に FactChecker というスクリプトが入っている

最初から書いてある print("Hello world!") は、あとで使うので残しておきます。

書いてみる

print の下に、こう書き足します。

print("Hello world!")

-- 正しいとき、パーツを緑にする
local LieDetector = script.Parent

if 3 + 3 == 6 then
    LieDetector.Color = Color3.fromRGB(0, 255, 0)
end
  • -- ではじまる行は、コメントです。人が読むためのメモで、プログラムは読みとばします
  • if 〜 then から end までが、「もし〜なら、こうする」です
  • 3 + 3 == 6 は、「3 + 3 は 6 と同じ?」という問いかけです
  • Color3.fromRGB(0, 255, 0) は色です。赤・緑・青の量を、0〜255で書きます。緑だけ255なので、緑になります

スクリプトの画面。print の下に、コメントと if の4行が書いてある

「▶」で再生してみましょう。3 + 3 は 6 なので、LieDetector が緑になります。

再生した画面。LieDetector が緑になっている

「出力」には、Hello world! と出ています。print は、出力に文字を出す命令です。右のはしには、どのスクリプトの何行目から出たか(FactChecker:1)も出ています。

「=」と「==」はちがう

書き方意味
=右のものを、左に入れる(第5回の Bridge.Transparency = 1 など)
==右と左が同じかを調べる

if のうしろには、== を書きます。

まちがった問いかけにしてみる

停止してから、if 3 + 3 == 6 then の行を、if 3 + 3 >= 10 then に変えて、もう一度再生します。

>= は「以上」です。3 + 3 は10以上ではないので、if の中は実行されず、緑になりません。

よく使う記号です。

記号意味
==同じ
~=ちがう
< ・ >より小さい・より大きい
<= ・ >=以下・以上

2つとも正しいときだけにしたいときは、and でつなぎます。if 3 + 3 == 6 and 2 > 1 then なら、両方とも正しいので実行されます。

4. わざとまちがえて、「出力」を読む

スクリプトをまちがえると、「出力」に赤い文字で知らせてくれます。わざとまちがえて、見てみましょう。

  1. 停止してから、さっき変えた if 3 + 3 >= 10 then の行を、もとの if 3 + 3 == 6 then にもどす
  2. LieDetector.Color の LieDetector を LieDetecter にする(1文字だけ変える)
  3. 再生する

「出力」に、赤い文字で Workspace.LieDetector.FactChecker:7: attempt to index nil with 'Color' と出ている

赤い文字は、こう読みます。

Workspace.LieDetector.FactChecker:7: attempt to index nil with 'Color'
部分意味
Workspace.LieDetector.FactCheckerどのスクリプトか
:77行目がおかしい
attempt to index nil with 'Color'「からっぽ(nil)のものの Color を使おうとした」

nil は、「なにもない」という意味です。LieDetecter という名前は、どこでもつけていません。だから中身がからっぽで、Color を変えられなかったのです。

7行目を見れば、どこを直せばいいかが分かります。

確かめたら、LieDetector にもどしておきます。

アシスタントに「直して」とたのむこともできます。でも、ほかのところまで書きかえられることがあります。まず出力を読むほうが、早く直せることが多いです。

5. 「〜回くり返す」— for

第5回の while true do は、ずっとくり返しました。こんどは、回数を決めてくり返します。10から0まで数える、カウントダウンを作りましょう。

  1. エクスプローラで ServerScriptService にマウスを乗せて「+」→「Script」を選ぶ
  2. できた Script の名前を Countdown にする
  3. 最初から書いてある行を消して、次のように書く
for count = 10, 0, -1 do
    print(count)
    task.wait(1)
end

for のうしろの3つの数が、くり返し方を決めています。

数意味
10はじめの数
0おわりの数
-11回ごとに、いくつふやすか(-1 なら、1つずつへらす)

count は、いま何番目かが入る変数です。10、9、8…と、1回ごとに変わっていきます。

エクスプローラの ServerScriptService の中に Countdown があり、スクリプトに for の4行が書いてある

再生すると、「出力」に 10 から 0 まで、1秒ごとに出てきます。

「出力」に、6、5、4、3、2、1、0 と、1秒ごとに数字がならんでいる

左の時刻を見ると、1秒ずつ進んでいるのが分かります。10から0までなので、11回くり返されました。

数を変えてみよう

for count = 0, 10, 2 do
    print(count)
    task.wait(1)
end

0、2、4…と、2つずつふえていきます。

動かないときは

  • 3つの数のあいだに、カンマ(,)が2つあるか
  • はじめの数から、おわりの数に向かっているか。for count = 10, 0, 1 do は、10からふやしても0にはならないので、1回も実行されません
  • 一度に全部出てしまうときは、task.wait(1) を書きわすれていないか

6. 「すべての〜について」— まちがいの足場

最後に、さわったらスタートにもどる、まちがいの足場を3つ作ります。

練習用の LieDetector を消す

LieDetector は練習用なので、ここで消しておきます。停止してから、エクスプローラで LieDetector を選んで、Delete キーを押します。中の FactChecker も、いっしょに消えます。

消さずに LieDetector の色を赤にしたり、コピーして足場を作ったりすると、中の FactChecker もいっしょについてきます。再生したとたんに、赤くしたはずの足場が緑になってしまいます。

まちがいの足場を作る

  1. 「パーツ」で足場を1つ出して、色を赤にする。「固定」も押す
  2. Ctrl + D で、2つ増やして、3つにする
  3. 3つを、Ctrl を押しながらクリックして選び、「グループ」を押す
  4. できたまとまりの名前を Wrong にする

Wrong は、英語で「まちがい」という意味です。第3回で使った「グループ」で、3つを1つのまとまりにしています。

赤い足場が3つならんでいて、エクスプローラでは Wrong の中にパーツが3つ入っている

アシスタントにたのむ

3つの足場それぞれに仕掛けを入れるのは大変です。そこで、「すべての〜について」を使います。

ServerScriptServiceに、WrongCheckerという名前の新しいスクリプトを追加して。Wrongの中のすべてのパーツについて、もしプレイヤーがさわったら、スタート地点からやり直しになるようにして

アシスタントの入力欄に、たのむ文が書いてある

変更内容を確かめてから「承認する」を押し、再生して、赤い足場にさわってみましょう。どの足場にさわっても、スタートからやり直しになります。

この例では、キャラクターはたおれずに、そのままスタート地点にもどりました。第6回のように、たおれてからもどることもあります。同じ「やり直し」でも、アシスタントが選ぶやり方は、たのむたびに少しちがいます。

赤い足場にさわったあと、キャラクターがスタート地点にもどっている。うしろに赤い足場が見える

作ってもらったスクリプトを読んでみる

ServerScriptService の WrongChecker を開いて、for と if を探してみましょう。

アシスタントが作った WrongChecker のスクリプト。46行あり、for や if がいくつも出てくる

この例では、46行のスクリプトができていました(中身は、たのむたびに少しちがいます)。大事なところを、ぬき出してみます。

for _, descendant in wrongModel:GetDescendants() do
    setupPart(descendant)
end

「Wrong の中の、すべてのものについて」です。for が、Wrong の中身を1つずつ取り出して、setupPart という関数(命令のまとまり)を呼び出しています。今回の for は、数ではなく、中身を1つずつ取り出してくり返します。

if part:IsA("BasePart") then
    part.Touched:Connect(onTouch)
end

「もし、それがパーツなら、さわったときに onTouch を呼び出す」です。Wrong の中には、パーツ以外のもの(スクリプトなど)が入っていることもあるので、「もしパーツなら」と確かめています。

player:LoadCharacter()

これが「スタート地点からやり直し」の命令です。キャラクターを、スタート地点に作り直します。だから、たおれずにそのままもどりました。

if not character then return end のような行もたくさんあります。「もし〜がなければ、ここでやめる」という意味です。

たのんだことばが、そのままスクリプトの形になっています。 第1回で「すべての〜について」「もし〜なら」とたのむとうまくいったのは、プログラムと同じ考え方で伝えたからです。

_ は、使わない値を入れておく場所です。気にしなくて大丈夫です。

7. 保存する

「ファイル」→「名前をつけてファイルに保存」(Ctrl + Shift + S)で、番号を1つ増やして保存します。

例:たろうのオビー_07

ふりかえり

  • 「もし〜なら」は if 〜 then 〜 end。同じかどうかは ==
  • 「出力」で、print の結果や、エラーを見る。エラーには行の番号が出る
  • 「〜回くり返す」は for count = はじめ, おわり, ふやす数 do 〜 end
  • 「すべての〜について」は for _, 〜 in 〜 do。中身を1つずつ取り出す
  • 第1回のたのみ方は、プログラムの形そのものだった

考えてみよう

自分のアスレチックに、どんな「もし〜なら」を入れたいですか?

  • もし赤い足場にさわったら、スタートにもどる
  • もしゴールにさわったら、花火が上がる
  • もし10秒たったら、足場が消える

いくつか書き出してみましょう。

次回

第8回では、ここまでの道具をぜんぶ使って、クイズのアスレチックを作ります。問題を読んで、正しい答えの足場にジャンプするゲームです。今回作った「まちがいの足場」が、そのまま役に立ちます。

先生・保護者の方へ:時間の目安(60分)

内容時間
おうちの人と話そう・保護者コントロール7分
前回の作品を開く・出力を出す5分
if で色を変える12分
わざとまちがえて出力を読む5分
for でカウントダウン12分
まちがいの足場(アシスタント・読む)12分
保存する2分
ふりかえり5分

ふりかえりの問いかけ

  • 「= と == のちがいを説明できる?」
  • 「while と for は、どうちがう?」— while true はずっと、for は回数や中身の数だけくり返します
  • 「自分のアスレチックに入れたい『もし〜なら』は?」

マイナスの数になじみがない場合は、-1 を「1ずつ引く」と言いかえてください。

この記事には、Roblox Corporation の教材(CC BY 4.0)を変更して利用している部分があります。