0 今日の目標

今回はテキスト型プログラミングのScriptを1から作りながら基本を学びます!
プログラマーとして役立つショートカットキーも使えるようになりましょう。

1 授業準備

目安時間: 5分
1-1

Roblox Studioを開いてログイン

まずはRoblox Studioを開いて、自分のアカウントでログインしておきましょう。
Roblox Studio起動 ログイン画面
1-2

前回のステージを開く

前回保存した「 実験用ステージ 」を開いておきましょう。
※なければ新しくBaseplateを作ってもかまいません。
実験用ステージを開く
実験用ステージを開くことができましたか?

2 テキスト型プログラミングを体験してみよう

目安時間: 15分
2-1

Script制作を体験しよう!

まずはブロック作りからScript実行までの流れを体験してみましょう。
1
ブロックを作る
まずはブロックを作り、少し大きくして、名前を「 練習ブロック 」にしておきます。
(見本:高さ5 横幅10)
ブロックを作る 名前を変更
2
Scriptを作る
名前を付けた練習ブロックのすぐ右にマウスカーソルをあてると、 のマークが出てきます。
これをクリックして「 Script 」を選ぶと、Scriptを入れることができます。
Scriptを追加
マークから入れたものは、必ずそのブロックの子になります。
少し右にずれていれば親子関係となり、で開いたり閉じたりできます。
親子関係
もし仮に入れようと思えば、子の中に新しい子を入れることもできます。練習ブロックからすれば孫ですね。
孫の関係
こうなってくると区別がつかなくなるので、Scriptにも必ず名前をつけておきましょう。
今回は「 練習Script 」としておきます。
Script名前変更
おさらい
この授業であつかうScriptは、モデル(Model)には子として入れても、いつも通り使うことができません。入れたければ、中にあるブロック本体の子にしましょう。
3
練習Scriptを実行してみる
Scriptをダブルクリックで開いてみましょう。最初から1行だけコードが入っています。
これはScratchでの「 ~と言う 」ブロックのようなものです。
Scriptを開く
これを実行するため、「 プレイ 」してみましょう。
しかし、ブロックもキャラクターも、何もしゃべってくれません。
プレイしても何も起きない
ここで、「 表示 」タブから「 出力 」を開いてみると、こちらに「 Hello world! 」が出ていました。
出力を確認
出力に表示
このように3Dゲーム制作では、実はキャラクターやブロックはそう簡単にしゃべりません。
「 print() 」は、ゲームプレイヤーには見えない「 出力 」にだけメッセージを表示します。
4
Scriptを書いてみよう
今回はプロパティからではなく、Scriptだけで、練習ブロックのTransparencyを「 0.8 」(半透明)にするScriptを作ります。
半透明ブロック
先に完成図を見せるとこの通りですが、入力するだけなら見た目ほど大変ではありません。
完成コード
なぜなら、この動画のように、英単語はすべて打たなくても候補から選ぶだけで自動入力してくれるからです。
※環境によってはAIが続きを提案してくれて、Tabキーで自動入力できることもあります。
動画で確認しよう
それでは実践してみましょう。
ただし、ゲームプレイ中に入力したコードは停止すると全て消えてしまうので、必ず先にプレイを停止しておいてください。
プレイ停止
まずは、1行目「 print("Hello world!") 」を消します。
1行目を削除
必ず入力方法を、日本語ではなく英語(半角)にしたまま、「 sc 」と打ってみましょう。
すると、「 sc 」から始まるよく使われる単語が出てくるので、そのままEnterキーを押すと、一番上の青色になっている単語が入力されます。
scと入力 自動入力候補
次に、「 . 」を打つと、また次の候補が出てきます。
打ちたいのは「 Parent」 だったので、そのままEnterキーです。
※Parentが出ていなかったら「 pa 」と打ってみましょう。
Parentを選択 Parent入力完了
次は「 Transparency 」を打ちたいのですが、「 . 」を打ったら「 Parent」が一番上に出てしまいました。
Parentが候補に
そんな時は、頭文字の「 t 」を打ったら、「 Transparency 」が一番上に出てくるので、そのままEnterキーです。
※マウスや矢印キーを使う必要はありません
Transparencyを選択
スペースを空けてから、「 = 」を打ち、またスペースを空けてから、「 0.8 」と打てたら完成です。
1が完全透明なので、0.8はかなり透明に近くなります。
コード完成
ポイント
「 = 」はShiftキーを押しながら打ちます。
見ないで打てるようにするなら、右側のShiftは遠いので、左手小指で押せる左側のShiftを使うのがおすすめです。
Shiftキーの位置
完成したら、プレイした時だけ半透明になるか試してみましょう。
全角だったり、1文字でもまちがえただけで動かないことがあるので、よく見比べてみましょう。
プレイして確認
ポイント
Scriptに書いてある指示は、プレイ中にしか動かないので、ブロックを作ったりしているステージ編集画面では全く動きません。
5
Script解説
今回のコードを日本語訳で説明します。
このように、「 . ~ の」「 = ~ を ... にする 」と読むことができます。
Script解説
なお、この「 Transparency 」は第2回のスタジアムでも使っていた「 プロパティ 」にあるものと同じです。
以前は手動で変えましたが、今回はScriptでプロパティの値を変えています。
プロパティとの関係
プレイすると、全てのコードが上から順に実行されるので、Scratchのようなハタはありません。
どのScriptにも最初から上にハタがあるのと同じ、と考えるとわかりやすいですね。
実行順序
テクニック紹介
見えない壁を作りたいけど、制作中の自分も見えなくて確認が大変...
そんな時はブロックを見えるように作っておいてから、この1行のScriptを入れると、制作中は見えるけど、ゲームプレイ中には見えなくなる。という仕組みが作れます。
① 透明なカベはあつかいづらい
透明な壁
② 編集中は見えるようにしておく
編集中は表示
③ プレイした時だけ透明になってくれる
プレイ時は透明
半透明にするScriptを1から書くことができましたか?
2-2

テキスト型プログラミングとは?

今回の1行のコードが打てたら、「 テキスト型プログラミング 」の第一歩を踏み出したことになります。
Scratchのような「 ビジュアル型プログラミング 」ではブロックをマウスで動かして作っていましたが、こちらは全て文字だけでプログラミングをしていきます。
テキスト型 ビジュアル型
テキスト型プログラミングは有名なものだけでも十数種ありますが、第3回でも紹介したように、Robloxでは「 Lua言語 」を使います。
Lua言語
みんな土台のルールは大体同じですが、少しずつ文法やルールが違うので、他の言語を使う時は注意しましょう。
例えばこの4つのプログラムは同じ結果を表示するものですが、言語が違うとこれくらい文法の違いがあります。
言語の違い
ここで、プログラミングに関するあいまいな言葉をScratchで表して整理しておきましょう。
プログラム: スプライトや手順をまとめたゲームやアプリ全体
プログラム全体
Script(スクリプト): ひとまとまりで動く命令 イベントブロックから始まる
Script
コード: Scratchではブロックのこと
コード
Robloxではこのようになります。
プログラム: ブロックや手順をまとめたゲーム全体
Robloxのプログラム
Script(スクリプト): ひとまとまりで動く命令
RobloxのScript
コード: Scriptの中の命令のこと Scratchでいうブロックのこと
Robloxのコード
2-3

このコースではScriptをどう学ぶ?

先ほどは1行だけでしたが、ゲームを作るにはChapter01でも見かけたScriptのように、これらが何十行・何百行もたくさん必要です。
長いScript
雪山テンプレート「エレベーターScript」より
しかもScratchのようなブロックがなく、基本英語なので、以下のようにとても根気がいります。
・他のWebサイトや本で調べながら英語のコードを打つ
・ほんの少しでもミスがあると英語のエラーが出てきて動かなくなる
エラー例1 エラー例2
そのため、本来プログラミングはあまりに難しく、高校どころか大学やゲームの専門学校にいったとしても、作ろうと思ったゲームやアプリを完成できず挫折した経験がある人は、100人中87人ほどいるくらいでした。
挫折率
しかし時代は変わり、2015年ごろからScratchのようなブロック型プログラミングが流行り、小学生からでもプログラミングができるようになりました。
Scratch
そして2023年頃から、AIがプログラムを生成できるようになりました。
あくまで組み合わせたりチェックしたりするのは人間ですが、コードを打つ手間や、言語ごとに細かい文法を覚える負担は大変少なくなりました。
動画で確認しよう
さらに、情報系の大学入試や資格試験も増えましたが、そのほとんどが選択問題の形式になっているほどで、「 読み取り 」「 アレンジ・修正 」の方が使う機会が多い時代になってきました。
(チャレンジしたい人は解いてみましょう。解答は下の方に用意してあります。)
入試問題例
解いてみた人のための解答
問題文にもある通り、14,150円は2割引されると11,320円になります。
変数を数値にしてみると、これに当てはまるのは、②となります。

② motone*(1-waribiki)

14150*(1-0.2)
14150*0.8
11320
Robloxもまた、Scriptを自力で打たなくても自由な作品ができる仕組みが整っているので、今回の内容が理解できなくても作品を完成させられるほどです。
そこでこのコースでは「 楽しくオリジナルゲームを完成させること 」を最優先とするため、このような長いScriptをひたすら打つことを強制しません。
長いScriptは打たない
文法をしっかり理解して自力で考えてたくさん打ったりするのは、もっとゲーム制作全体に慣れてからがおすすめです。
...それでも!今日から自力でもっと打ってみたいという人のためにスペシャル問題も用意しているので、余裕がある人はぜひ挑んでみてください!
テキスト型プログラミングについて理解できましたか?

3 ショートカットキーを使ってみよう

目安時間: 10分
3-1

ショートカットキーとは?

「 Ctrlキー 」を押しながら他のキーを押すと、便利なワザが使えます。
よく使われるものは大体左下にそろっています。
ショートカットキー位置
A は ALL(オール)、S は Save(セーブ)、F は Find(ファインド)、C は Copy(コピー)からきていますが、Z・X・V は覚えづらいので、イメージで覚えると良いかもしれません。
ショートカットキーのイメージ
右クリックメニューなどの右の方にも書いてあるので、忘れた時は見てみましょう。
「 Ctrl Z 」と書いてあったら、Ctrlを先に押し続けながら、Zキーを1回押します。
メニューのショートカット表示
マウスをあてつづけると、説明とともにショートカットキーが見つかることもあります。
よく使うものは覚えておくと便利になりますね。
ツールチップのショートカット
3-2

ショートカットキーを使ってみよう

今回は、Scriptのサンプルセットをコピーして、Scriptを貼り付ける流れを練習してみます。
左小指でCtrlキーを押しながら、他の指でZやVなどを押すのがおすすめです。
指の位置
まずは、WorkspaceにScriptを挿入します。
Scriptを追加 Script追加完了
名前を「 サンプルScriptセット 」にしてから、ダブルクリックして中身を開きます。
名前変更して開く
Roblox素材フォルダから、「3-2_サンプルScriptセット.txt」を開きます。
サンプルファイルを開く
パソコンでウィンドウを大きく表示(全画面など)すると、ここに「ダウンロード」ボタンが出てきます。
「3-2.サンプルScriptセット.txt」をダウンロード 
Ctrl A で全選択してから、Ctrl C でコピーします。
※Ctrlキー(緑)を先に押し続けながら、キー(赤)を1回押します。
全選択
コピー操作
コピーできたら、メモ帳を閉じておきましょう。(心配ならあとで閉じてもOKです)
Roblox Studioにもどります。
Studioに戻る
今あるコードは消したいので、Ctrl A で全選択しておきます。
コードを全選択
そのまま、Ctrl V で貼り付けすると、今選んでいるところを上書きして、Scriptを貼り付けてくれます。
貼り付け完了
さらに、Ctrl F で右上に検索バーが出てきて、Scriptの中から文字で検索ができます。
検索バー
検索機能
試しに、プレイヤーの体力である「 Health 」のコードがないか検索してみます。
小文字でも良いので、「 hea 」と検索してみると、257行目で見つかりました。
検索結果
複数ある時は、「 前 」「 次 」で移動できます。で閉じることもできます。
検索ナビゲーション
ついでに、Ctrl Sで上書き保存ができるので、試しておきましょう。
保存
この300行以上のサンプルScriptセットは、中から使いたいコードだけコピーして、他のScriptに貼り付けて使うために用意しています。
今は見るだけにしておいて、後の自由制作で試してみましょう。
サンプルScript全体
なお、このサンプルセットはあくまでサンプルを集めたものなので、このまま丸ごと実行してもエラーが出たり、動作が重くなるかもしれません。
そのため、「 サンプルScriptセット 」で右クリック 「 スクリプトを無効化 」をします。
無効化
無効化できると、Scriptタブ名に [ 無効 ] という意味の [ Disabled ] が表示されたり、Scriptが半透明になったりするので、確認しておきましょう。
無効化確認1 無効化確認2
今回のようなショートカットキーは、Roblox以外でも、文字がある所なら大体同じように使えます。
インターネットブラウザ・オフィスソフト・他のプログラミングなど多くの場面で使えるので、ぜひ使いこなせるようになりましょう。
ショートカットキー一覧
ショートカットキーを使うことができましたか?

4 Scriptの基本を学ぼう

目安時間: 30分
ここからは、ショートカットキーを使いながら、Scriptの中身を具体的に作ったり修正したりしていきます。
注意
今回は、本コース全20回を通して最も楽しくも難しくもなるところです。
しかし、もし理解しきれないと思っても、この先の授業や作品制作にはあまり問題ありません。
なぜなら、前回のブロック制作、次回のオンライン素材活用、さらにいずれはAIにプログラムを生成させたりなど、他の伸ばし所がたくさんあるからです。
本来ゲーム・アプリ制作は、デザイナー、プログラマー、プロデューサーなど、得意な担当分野を分けて作るものです。自分の強みを活かしやすい作り方を目指していきましょう。
4-1

Scriptでプロパティを変更する

先ほどの体験を復習しながら、「 変数 」「 ~秒待つ 」を使って、ブロックが少しずつ消えていく練習用のScriptを作ってみます。
完成図とScratchで表した図はこの通りです。
完成図 Scratchでの表現
どんな動きをするのか、動画で確認しよう
不具合が起きたり、わからなくなった時のために、コピーして使える解答も用意してあります。
消えていくScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
必ずプレイを停止してから、新しくわかりやすい大きさのブロックを作り、必ず「 固定 」しておきます。
その中にScriptを入れます。
ブロックとScript
Script追加
おさらい
ブロックのすぐ右にマウスカーソルをあてると、 のマークが出てきます。
これをクリックすると、Scriptを入れることができます。
Script追加方法
ブロックの名前は「 消えていくブロック 」に、Scriptの名前は「 消えていくScript 」に変更しておきます。
名前変更
消えていくScriptをダブルクリックで開きます。
まずはこの2行を、入力候補をうまく使いながら打ってみましょう。
最初の2行
1行目: [ このScript ] の [ 親 ] の [ 透明度 ] を [ 0.2 ] にする
2行目: [ 3 ] 秒待つ
()の打ち方
waitを「 wa Enter 」で自動入力すると()も自動でついてきますが、自分で打ちたい人はこちらで打ちます。
かっこの打ち方
打てたら、この2行を「 Ctrl + C 」でコピーします。
コピー
その後、2行目の最後で改行(Enterキー)して、3行目にしてから、「 Ctrl + V 」で貼り付けます。
このようになれば成功です。
貼り付け
一度コピーしたものはしばらく残り続けるので、またコピーすることなく、そのまま5行目に「 Ctrl + V 」で貼り付けることができます。
さらに貼り付け
さらに続けて2回貼り付けて、5セットにしてみましょう。10行目で終わります。
5セット完成
このままではずっと [ 0.2 ] のままなので、0.4、0.6...と修正していきます。
カーソル(入力する場所)は、マウスだけでなく、キーボードの矢印キー(←↑↓)でも動かせます。自分の操作しやすい方法を見つけてみましょう。
数値変更 矢印キー
打ち終わったら、プレイして試してみましょう。
ブロックが少しずつ消えていき、最後は100%透明になったら成功です。消えないときはこの後の説明を見てください。
動作確認
エラーが起きたら?
もしまちがっているときは赤い波線が出たり、出力画面にこのScriptのこの行でエラーが起きていると出てくるので、その行をよく見直してみてください。
エラー表示
また、まちがって行番号のすぐ右をクリックすると、 が出てきて、そこでプログラムを止めてしまいます。
そんな時は、「 右クリック ブレークポイントを削除 」で消すことができます。
ブレークポイント削除
次は、第2回で学習した「 CanCollide 」をオフにして、消えるとともに当たり判定をなくして通り抜けられるようにします。
ただし、プログラムでは「 チェック()」をするところがないので、新しいコードの打ち方が必要です。
CanCollide
それでは、必ずプレイを停止してから、11行目に、「 false 」を使った新しいコードを追加してみます。
falseを追加
このように、チェックオフを「 false(フォルス) 」、逆にチェックオンは「 true(トゥルー) 」で表現します。
trueとfalse
またプレイして、完全に透明になってから3秒後に、当たり判定がなくなることを確認してみましょう。乗っておくと落ちるのでわかりやすいですね。
落下確認
ただし、もし「 固定 」をせずに当たり判定をなくすと、地面すらすり抜けてステージ下に落ちてしまうので、ブロックが消えたまま現れなくなったら、固定を確認してみましょう。
固定の重要性
次は、このScriptに変数を入れてみます。
必ずプレイを停止してから、Scriptの1行目の最初にカーソルをあわせて、2回改行を空けてみます。
改行を空ける
ここに、「 time(タイム) 」という名前の変数を作り、中身に3を入れます。
「 local(ローカル) 」のスペルは、「 エル・オー・シー・エー・エル 」です。
変数定義
このように「 local 」を使うと変数を作ることができ、「 = 」で中身を入れることができます。
変数の仕組み
あとから中身を変えたい時は、localなしで使えばOKです。
変数の変更
ただし、変数名にはいろんな注意点があります。
変数名の注意点
・変数は、かなり工夫しない限り、他のScriptで使うことはできません。
・日本語を使うことができません。半角英数の大文字・小文字と、記号は「 _ 」(アンダーバー)だけが使えます。
良い例) Time Time1 MatiZikan mati_zikan
「 1time 」のように数値を先頭にしてはいけません。
悪い例) 999 1kome 3
・以下の単語は他のコードで使われるので、これらの名前と全く同じ変数は作れません。
and break do else elseif end false for function
if in local nil not or repeat return then true until while
それでは、待ち時間の3を全て「 time 」に直してみましょう。
これで、第3回目のScriptアレンジの時のように、1行目を変えるだけで、全ての待ち時間が変わるようになります。
timeに変更
「 time 」の中身を「 5 」など好きな値に変えて、プレイして試してみましょう。
※ゲームが起動するのに数秒時間がかかるので、「 1 」などにするとすぐ消えてしまいます。
時間変更
これで完成です!プレイして確認してみましょう。
うまくいかなかったら、完成版Scriptをコピーして、試してみましょう。
消えていくScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
ゲームの動きにしたいならループが必要
Scriptは、1人1人のプレイヤーが入った時ではなく、世界が始まるとともに実行されます。
Roblox Playerでは、ブロックを消したらゲームサーバーごと再起動しないと戻りませんし、消えた後に新しいプレイヤーが入ってきても、ブロックは消えたままです。
オンラインゲームとして公開するなら、この次の「 ループ 」を使うようにしましょう。
4-2

ずっと動かし続ける

Scratchでもよく使われる「 ずっと 」によるループを作ります。
Scratchのずっと
完成図とScratchのイメージはこの通りです。
「 ブロックが現れる(乗れる) 半透明になる(まだ乗れる) 消える(乗れなくなる) 」という流れを、幽霊効果の中身を出力しながらずっと繰り返しさせます。
完成図 Scratchでの表現
※幽霊効果の数値を見る方法はScratchにはありません。
どんな動きをするのか、動画で確認しよう
不具合が起きたり、わからなくなった時のために、コピーして使える解答も用意してあります。
透明ループScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
Scratchでは、ずっとブロックに囲まれているかどうかで、ループさせたいものを決めていました。
Scratchのずっとブロック
テキスト型プログラミングでは、代わりに「 半角の空白4つ 」「 タブ 」で右にずらして表現します。
ループの終わりには「 end(エンド) 」を打っておきます。
インデント
必ずプレイを停止してから、新しくわかりやすい大きさのブロックを作り、必ず「 固定 」しておきます。
その中にScriptを挿入します。
ブロックとScript作成
Script追加完了
挿入できたら、ブロックの名前を「 透明ループブロック 」に、Scriptの名前を「 透明ループScript 」に変更しておきます。
名前変更完了
透明ループScriptを開きます。
まずは1行目に、time変数を作ってみましょう。
変数定義
さらに改行を空けて、4行目に「 ずっと 」となる「 while true do(ワイル トゥルー ドゥー) 」を打ってみましょう。
※プログラムは、改行をいくら空けても関係なく動きます。
whileループ
「 do 」のあとに改行をすると、自動的に5行目が右にずれて、6行目に「 end 」が現れます。
自動インデント
ポイント
もし間違って空白を消してしまった時は、「 半角の空白スペース4回 」を打つか、「 Tabキー1回 」で右にずらします。
インデント修正
この中に、1行空けてから、ブロックがtime秒ごとに現れるコードを打ってみましょう。
print()を使うと、最初の「 Hello world! 」のように、出力画面に文字や数値を出すことができます。
ループ内容
whileループは負荷がかかる?
ループ内にtask.wait()がないと、Scratchではありえない速度でループを繰り返し、Roblox Studioが止まって動かなくなります。
ゲームが重いと感じた時は、なるべくtask.wait()で待つ時間を増やしてみましょう。
負荷の問題
Tweenと呼ばれるような、なめらかなループの動きができるコードもありますが、高難易度になります。いつか慣れてきたら挑戦しましょう。
英語のコードが長くなってくるとどれが何かわからなくなって来ますが、「 -- 」(マイナス2つ)を使ってコメントを入れることができます。
コメント
その先の文字は緑色になり、「 コメントアウト 」として、コードとは関係なくコメントを残すことができます。
コメントアウト
Scratchのコメントと同じようなものです。
Scratchのコメント
これから似たコードを3回入れるため、ループの中身だけを選択して、「 Ctrl C 」でコピーします。
コピー
わかりやすく改行を空けながら、「 Ctrl V 」で2つ貼り付けます。
コピー
コメントを図のように変更してみます。
コピー
ここからどのように「 0 」「 true 」を書き換えればコメント通りの動きになるか考えて、できたら答えを見る前に自分でアレンジしてみましょう。
※半透明の時は、まだ乗ることができます。
考えてみよう
アレンジできると図のようになります。
0.5で半透明、1で完全透明、CanCollideをfalseにすると当たり判定がなくなります。
アレンジ完成
プレイしてみると、2秒ごとに「 表示 半透明 透明 」を繰り返すとともに、「 出力 」に現在の透明度が表示されるようになります。
透明ループScript:8 と書いてあったら、8行目でprint()されたということもわかります。
出力確認
最後に、print()は「 他のScript制作中にも常に出続けてしまう 」ので、実験が終わったら必ず停止をしてから、コードを「 -- 」でコメントアウトしておきましょう。
※ショートカットキーでコメントアウトするなら、行を選択して「 Ctrl / 」です。
コメントアウト
プレイして、出力画面には何も出なくなったことを確認してみましょう。
出力なし確認
文字が上書きされてしまう時は?
「 -- 」を打つときに、すぐ右にあった「 pr 」を上書きして消えてしまうことがあります。
下図をよく見ると、カーソルが「 | 」ではなく「 ■ 」のようになっていますね。
上書きモード
これはまちがって「 Insertキー 」を押して、上書きモードになっていると起こります。
もう一度Insertキーを押せば直ります。
Insertキー位置
4-3

触れたら何かする

イベントや「 もし ~ なら 」の仕組みを使って、プレイヤーがワープするScriptを作ります。
Scratchのイベント
完成図とScratchのイメージはこの通りです。
ここからは自力で打たず、コピーして貼り付けることをお勧めします。
ワープScript完成図
Scratchでの表現
どんな動きをするのか、動画で確認しよう
必ずプレイを停止してから、新しくわかりやすい大きさのブロックを2つ作り、「 固定 」しておきます。
名前はそれぞれ、「 ワープブロック 」「 ワープ先 」にしておきます。
※同じ色だとわかりづらいので、違う色か形にしてみましょう。
ブロック作成
2つのブロック
「 ワープブロック 」の中にだけScriptを挿入して、名前を「 ワープScript 」にしておきます。
Script追加
今回は、見本のScriptを「 Ctrl C 」でコピーして、自分のワープScriptに「 Ctrl V 」で貼り付けましょう。
※余裕があるなら入力してもかまいません。
ワープScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
実行したら、ワープブロックに乗って、プレイヤーがワープ先に移動することを確認してみましょう。
ワープ動作確認
まずは大事なところだけ説明します。
こちらが「 親ブロックが何かに触れたら 」起動する、イベントブロックのようなものです。
アレンジするようなところはほぼないので、まさにコピーして使いたいところです。
Touchedイベント
次に、「 if ~ then ~ end 」のところは、Scratchでの「 もし ~ なら 」ブロックです。
もしこの条件を満たしたら、endまでの中にあるコードを実行します。
今回は、触れたものがゲームプレイヤーか?ただのブロックか?を調べています。
if文解説 Scratchの条件分岐
もしプレイヤーだったなら、このコード1行を実行します。
そのプレイヤーをワープ先ブロックの少し上に移動させます。
移動処理
難しそうですがアレンジできるところでもあるので、少しずつ解説します。
まず、「 workspace["ワープ先"] 」というのは、エクスプローラでの「 Workspace 」の中にある「 ワープ先 」という名前のブロックを指定する、ということになります。
workspace指定
このように、RobloxではどこにScriptを置いても、その1つのScriptだけでステージ上の全てのブロックを操作することができます。
ただし、基本的には今まで通りブロックごとにScriptを分けた方がわかりやすく、エラーも起こりづらいです。
ポイント1
ワープ先を変えたいなら、図のように「 ワープ先A 」などと変える必要がありますが、全く同じ名前でないと見つけてくれないので注意しましょう。
このAが、全角か半角か、小文字か大文字かで全く違う文字になってしまうのです。
名前の重要性
ポイント2
ワープ移動先には、モデル(Model)を選ばないようにしましょう。モデルの中にあるブロックなら指定できます。
モデル注意
次は「 CFrame 」と、「 Y座標を5増やす 」ところです。
CFrame解説
Robloxだけでなく3Dゲーム制作ソフトでは、ブロックやキャラクターの位置や角度を動かす時、基本的に「 X・Y・Z 」の3点セットであつかいます。
XYZ座標
ブロックのプロパティの中でも、カンマ( , )で区切った3点セットで、Size( サイズ・大きさ )、Position( ポジション・位置 )、Orientation( 向き )が設定されていますが、みんな「 X, Y, Z 」の順です。
プロパティのXYZ
その中でも、位置や向きについては、「 CFrame(シーフレーム) 」というもので一斉に管理されています。
CFrame
今回はそんなCFrameに、回転は変えずに移動だけさせたかったので、XYZの位置だけを計算できる「 Vector3.new( ) 」を使って、Y座標を5だけ足しています。
Vector3
ここまで説明しましたが、大事なのは全体の中でここだけです。
話が難しいと感じた人は、名前の指定と、「 X, Y, Z 」の並びだけでも覚えておきましょう。
重要部分
最後に、後から見てもわかりやすいように、自分なりにでも見本通りでも良いのでコメントを追加しておきましょう。
コメント追加
4-4

メッセージを出す

プレイヤーが触れた時に、画面に好きな文字を出すScriptを作ってみます。
メッセージ表示例
どんな動きをするのか、動画で確認しよう
前回作ったゴールフラグを使って、触れたら「 Game Clear! 」と出てくるようにします。
違うステージに作っていたなら、ツールボックスのマイモデルから取り出しましょう。
ゴールフラグ
おさらい
ホーム ツールボックス 持ち物タブ の中に、保存した素材が並びます。
マイモデル
必ずプレイを停止してから、ゴールフラグにScriptを挿入して、「 メッセージScript 」と名付けておきましょう。
Script追加
今回も、見本のScriptを「 Ctrl C 」でコピーして、自分のメッセージScriptに「 Ctrl V 」で貼り付けましょう。
※かなり余裕があるなら入力してもかまいませんが、スペシャル問題に挑戦する時間がなくなります。
メッセージScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
実行したら、ゴールフラグに触れて、Game Clear! のメッセージが表示されるか確認してみましょう。
メッセージ確認
注意
このメッセージは、ブロックに触れたプレイヤーにだけ表示されます。
1人がゴールしたら、全員にゲームクリアと表示されるわけではありません。
Robloxで2Dの文字を使うのは、Chapter03(第11回~)がメインになるので、今回は文字変更・色変更の方法だけ説明します。
先に一通り説明を見てから、後でアレンジしてみましょう。
Script全体
文字を変えたい時は、「 label.Text 」の値を変更します。
「 Text(テキスト) 」「 文字・文章 」という意味で、プログラミングの世界ではよく出てくる言葉です。
Text変更
ただし、プログラムの中で文字をあつかうときは必ず半角の " " で囲む必要があります。
もし消してしまったら、「 Shift 2 」で打つことができます。
文字列の囲み方
Robloxで使われている文字フォントは英語のものが多く、今回も英語フォントなので、日本語にすると見た目が初期フォントになります。
いつか海外の人にもプレイしてほしいなら、英語のメッセージにも慣れておきたいですね。
英語表示 日本語表示
次は文字色についてですが、TextColor3(テキストカラー・文字の色)の値を見ると、XYZのように3つの数値が入っています。
色の設定
コンピュータの世界では、R・G・B(赤・緑・青)による3色の「 光 」を組み合わせることで、1677万色(フルカラー)を表現しています。
RGB
3色それぞれの光の強さは「 0~255 」で決まっていて、0なら光を全くつけていない、255なら光を全力で出している、ということになります。
(赤Red, 緑Green, 青Blue)の順で、たとえば、( 255, 0, 0 )なら赤、( 0, 255, 0 )なら緑、( 0, 0, 255 )なら青になります。
RGB例
さらに、( 0, 0, 0 )なら、3色すべて光を全く出していないので黒、( 255, 255, 255 )ならすべて光を全力で出しているので白になります。
そして、中間の( 128, 128, 128 )にしたらグレーになります。
白黒グレー
改めて今回の色を見てみると、( 28, 130, 17 ) ( 赤28, 緑130, 青17 )ということで、赤と青はほんの少し、緑が130(最大明るさ255の半分くらい)なので、暗めの緑色になります。
今回の色
これら「 光の3原色 」を理解していると、コードを見ただけで色がある程度わかるようになります。
なお、色を決める時は、数字の部分をクリックした時に出てくる虹色のボタンから直接選ぶこともできます。
カラーピッカー
開くと、色合いや濃さをScratchのように変えることができます。
RGBの数値もここから確認することができます。
カラーピッカー詳細
好きな文字や色に変更するだけでも、オリジナルらしいメッセージや案内にすることができます。
試しに、必ずプレイを停止してから、文字や色をアレンジして試してみましょう。
アレンジ箇所
アレンジ例
アレンジ例1 アレンジ例2 アレンジ例3
今後も使いたいScriptは、右クリック 「 保存/エクスポート 」 「 Robloxに保存 」で保存していきましょう。ブロックごとでも、Script単体でも保存できます。
保存方法
Scriptの基本を学ぶことができましたか?

5 自由制作

目安時間: 残り10分前まで
ここまででScript学習は十分ですが、もしも時間が余っていれば、サンプルScriptセットやこれまでのScriptを参考に、自由にコピーして組み合わせたり試したりしてみましょう。
本当にまだまだ余裕がある、もっと自力で作ってみたいという人は、「 スペシャル問題 」に挑戦してみましょう。
時間に余裕がなければ、解答見本を見るだけでも、コピーして試すだけでもかまいません。
スペシャル問題
お題や動画を元に、自力で入力したり、コピーや貼り付けの組み合わせでコードを完成させましょう。 「 サンプルScriptセット 」を見たりコピーして作ることを想定しています。
保存方法
SP1

信号ブロック

お題
親ブロックの色が、青( 5秒 ) 黄( 1秒 )赤( 3秒 )の順でずっと変わり続ける。
赤の間は、親ブロックを通り抜けるようにする。
この動画のしくみを自力で作ってみよう!
ヒント
whileループを使いましょう。
信号ブロックは、必ず「 固定 」しておきましょう。固定せずぶつかり判定をオフにすると、Baseplateを突き抜けて奈落の底に落ちてしまいます。
サンプルScriptセットにある通り、文字の色だけでなく、ブロックの色もRGBで変えることができます。
Scriptの流れ
① ループ中の動き
親ブロックを青色にする
親ブロックをぶつかれるようにする
5秒待つ
親ブロックを黄色にする
(親ブロックをぶつかれるようにする)
2秒待つ
親ブロックを赤色にする
親ブロックをすり抜けるようにする
4秒待つ
信号ブロックScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
SP2

空中スイッチでトビラを開けよう

お題
空中スイッチ(ブロック)と、トビラ(ブロック)を用意する。
プレイすると空中スイッチは黄色になる。
空中スイッチに触れたら、空中スイッチは茶色になり、「 触れたら判定(CanTouch) 」がオフになる。同時に、トビラが横にずれる。
5秒後、色・位置・判定の全てが元に戻る。
この動画のしくみを自力で作ってみよう!
ヒント
空中スイッチやトビラは、必ず「 固定 」しておきましょう。
CanTouchをオフにしないと、透明でも当たり判定が残り、連続で何度も起動してしまいます。
触れるのは空中スイッチの方だけなので、トビラにはScriptを入れる必要はありません。
以下のように、空中スイッチのScriptから、トビラを指定しましょう。
Scriptの流れ
① 初期化
親ブロックを黄色にする
② 空中スイッチに触れた時
親ブロックの触れたら判定をオフにする
親ブロックを茶色にする
トビラを横に動かす
5秒待つ
③ 空中スイッチに触れてから5秒後
親ブロックを黄色にする(元の色にもどす)
トビラを横に動かす(元の位置にもどす)
親ブロックの触れたら判定をオンにする
※( 10, 0, 0 )は、ステージの向きにより( 0, 0, 10 )にする必要があります。
また、触れ方によっては想定より遠くにずれることがあります。
空中スイッチScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
SP3

魔法石を取って橋を渡ろう

お題
魔法石(ブロック)と、橋(ブロック)を用意する
魔法石に触れると、魔法石が消えて、「 ぶつかる判定(CanCollide) 」と、「 触れたら判定(CanTouch) 」がオフになる。
橋が渡れるように向きが90°変わる。
5秒後に、魔法石が復活し、橋が元の向きに戻る。
この動画のしくみを自力で作ってみよう!
ヒント
魔法石や橋は、必ず「 固定 」しておきましょう。
特に魔法石は、固定せずぶつかる判定がなくなると、Baseplateを突き抜けて奈落の底に落ちてしまいます。
CanCollideをオフにしないと、透明なのに乗ったりぶつかったりできてしまいます。
CanTouchをオフにしないと、透明でも当たり判定が残り、連続で何度も起動してしまいます。
触れるのは魔法石の方だけなので、橋にはScriptを入れる必要はありません。
以下のように、魔法石のScriptから、橋を指定しましょう。
Scriptの流れ
① 親ブロック(魔法石)に触れてからすぐ
親ブロックを透明にする
親ブロックのぶつかる判定をオフにする
親ブロックの触れたら判定をオフにする
橋の向きを90°変える
5秒待つ
② 親ブロック(魔法石)に触れてから5秒後
橋の向きを元に戻す
親ブロックを表示する
親ブロックのぶつかる判定をオンにする
親ブロックの触れたら判定をオンにする
※( 0, 0, 90 )は、ステージの向きにより( 90, 0, 0 )にする必要があります。
魔法石Script
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
自由制作やスペシャル問題に挑戦できましたか?

6 チェック問題

目安時間: 5~10分
今回学んだことの理解度をクイズで確認しましょう。

学習者情報の入力

7 さいごに

目安時間: 5分
7-1

残り時間の過ごし方

早く終わったら、授業終わりまでプレイしたり、続きを作ってもかまいません。
続きを作った時は、「 ファイル 」 「 Robloxに保存 」だけで上書き保存できます。
メニュー右側には書いてありませんが、「 Ctrl S 」でも上書き保存できます。特に今回はぜひ試してみましょう。
上書き保存
7-2

ログアウト

終わるときには、右上の自分のIDから、ログアウトします。
ログアウト1 ログアウト2
7-3

今日のまとめ

テキスト型プログラミング体験
Scriptを1から書いて、ブロックを半透明にできるようになりました
ショートカットキーをマスター
Ctrl+C、Ctrl+V、Ctrl+Zなど、便利なキー操作を覚えました
プロパティをScriptで変更
透明度やCanCollideをコードで操作できるようになりました
ずっと繰り返すループ
while true doを使って、動きを永遠に繰り返せるようになりました
触れたら何かする
Touchedイベントを使って、プレイヤーがワープする仕組みを作りました
画面にメッセージ表示
触れた時に画面に文字を出す方法を学びました
次回予告
次回は、「オンライン素材を活用しよう」で、クリエイターストアから3Dモデルや音楽など、様々な素材を使えるようになります。
さらに、Chapter02の完成作品を企画していきますよ!