0 今日の目標
アイテムを無限にクローンし続け、そのアイテムをひろうたびにカウントを進めてゲームを進行できるようにします!
1 授業準備
目安時間: 5分
1-1
Roblox Studioを開いてログイン
まずは Roblox Studio を開いて、自分のアカウントでログインしておきましょう。
1-2
実験用ステージを開く
前回保存していた「実験用ステージ」を開いておきましょう。
※使いづらかったり、すでになければ新しく Baseplate を作ってもかまいません。
※使いづらかったり、すでになければ新しく Baseplate を作ってもかまいません。
実験用ステージを開くことができましたか?
2 コインとValue変数を作ってみよう
目安時間: 15分
プレイヤーが触れたらカウントを1ずつ増やすコインを作ってみます。
2人以上でプレイする時も、みんなで共通して1つのカウントを増やします。
2人以上でプレイする時も、みんなで共通して1つのカウントを増やします。
動画で確認しよう(コインカウントの見本)
2-1
ひろえるコインを作っておこう
まずは円柱ブロックを作って、角度や大きさを変えたり、素材や色を好きに変えてみましょう。
固定はしなくてもかまいません。
固定はしなくてもかまいません。
※見本では素材を「 Metal 」、色を「 黄色(New Yellow)」、大きさを「 X1 Y3 Z3 」にしています。
2-2
どこからでも使える変数を作ってみよう
まずは変数のおさらいです。
もし Scratch で、変数「 myHP 」を作って 100 にして表示するなら、このようになります。
もし Scratch で、変数「 myHP 」を作って 100 にして表示するなら、このようになります。
これをテキスト型プログラミングの Lua言語 で再現するとこのようになります。
1行目: local で myHP という変数を作り、100を入れる。
3行目: myHP の中身を表示する。
3行目: myHP の中身を表示する。
ここでの大きな違いとして、Scratch の変数は他のスプライトからも使えますが、こちらでは通常Script内でしか使えません。
たとえば、Script1 で作った myHP という変数は、Script2 から見ようとすると「 nil 」(ニル・何もない)と出てしまいます。
たとえば、Script1 で作った myHP という変数は、Script2 から見ようとすると「 nil 」(ニル・何もない)と出てしまいます。
どうやら Script 同士は、変数をプライベートな情報だと思っているようです。
ポイント
これは Scratch の「 このスクリプトのみ 」で作っていたローカル変数と同じものです。
Scratch では普通に変数を作ったらどこからでも使えていましたが、あれは特別なことだったのです。
Scratch では普通に変数を作ったらどこからでも使えていましたが、あれは特別なことだったのです。
それならば、Script の外に変数の代わりを作ります。
「 ReplicatedStorage 」(レプリケイテッドストレージ)に、value で検索して、「 IntValue 」(イントバリュー)を入れてみます。
「 ReplicatedStorage 」(レプリケイテッドストレージ)に、value で検索して、「 IntValue 」(イントバリュー)を入れてみます。
IntValue は、整数1つを覚えてくれる「 変数 」の役割を持っています。
今回はひろったコインを数えるので、名前は「 コインカウント 」に変えておきましょう。
今回はひろったコインを数えるので、名前は「 コインカウント 」に変えておきましょう。
これなら、どのScriptからもその中身を見に行くことができます。
ReplicatedStorage とは?
これまで使っていた Workspace は、なんでも置くことができますが、あくまでステージ上に存在するブロックやモデルのための表舞台です。
それに対して、ReplicatedStorage は舞台裏の倉庫です。変数やクローンの元などを置いておくのに役立ちます。
それに対して、ReplicatedStorage は舞台裏の倉庫です。変数やクローンの元などを置いておくのに役立ちます。
2-3
カウントScriptを入れてみよう
コインの中に Script を入れて、プレイヤーが触れたらコインカウントを +1 ずつ変えて、コインを破壊するようにします。
ブロックの名前を「 コイン 」にし、その中にScriptを入れて名前を「 カウントScript 」にしましょう。
ブロックの名前を「 コイン 」にし、その中にScriptを入れて名前を「 カウントScript 」にしましょう。
カウントScript の中身は以下の通りです。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
Ctrl A で全選択
Ctrl C でコピー
Scriptを開いて元あるコードを消す
Ctrl V で貼り付け
カウントScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
プレイする前に、「 出力 」が出ていなかったら、「 ウィンドウ 出力 」で出力画面を出しておきましょう。
また、コインを複製して、2つ以上にしておきましょう。
※右クリック 複製 か、選択 「 Ctrl D 」で複製できます。
※右クリック 複製 か、選択 「 Ctrl D 」で複製できます。
プレイしてコインに触れてみると、コインが消えて、出力画面にコインカウントと値が表示されれば成功です。
この値は、プレイ中に「 コインカウント 」のプロパティからも確認することができます。
Scriptの説明
カウントScript は、Scratch で再現すると以下のようなことをしていました。
対応させてみると以下のようになります。
まずは1~2行目です。
「 local count 」で変数を作り、その中に、ReplicatedStorage にある「 コインカウント 」を入れています。
「 local count 」で変数を作り、その中に、ReplicatedStorage にある「 コインカウント 」を入れています。
WaitForChild("コインカウント")で、「 コインカウント 」という名前の子が見つかるまで待つ。という意味になります。
1~2行目は名前の指定以外は毎回この形で使うので、コピーして使いまわせると良いですね。
1~2行目は名前の指定以外は毎回この形で使うので、コピーして使いまわせると良いですね。
次は以前も学習した「 プレイヤーに触れたら 」です。
こちらもこのまま変更するところがないので、他の Script などからコピーして作れると早いですね。
こちらもこのまま変更するところがないので、他の Script などからコピーして作れると早いですね。
プレイヤーに触れたら、以下3つを実行します。
内容は右側コメントアウトの通りですが、文法や仕組みを説明します。
内容は右側コメントアウトの通りですが、文法や仕組みを説明します。
コインカウントの数値が入っている場所は、あくまでコインカウントの中の「 Value 」でした。
そのため、「 count += 1 」ではなく、以下のような形にしなければなりません。
なお、Scratch では「 変数を-1ずつ変える 」で変数を減らすことができましたが、Roblox では以下のようにします。
ポイント
count の中身を 0 以外で初期化したい時も、count = 10 ではなく以下のようにします。
次に出力画面に名前と値を出す方法です。
print( )を使うと、その中にある値を出力画面に出してくれます。
ここで、「 .. 」を使うことで、文字や値をつなげることができます。「 りんご と バナナ 」ブロックと同じですね。
ここで、「 .. 」を使うことで、文字や値をつなげることができます。「 りんご と バナナ 」ブロックと同じですね。
この1行で、コインカウントこと count のプロパティから、名前(Name)と値(Value)を指定しています。
3つ目は「 Scriptの親ブロックが破壊をする 」、つまり自身を削除するというコードです。
これからコインはクローンして無限に増やせるようにするので、透明度を変えるのではなく削除します。
これからコインはクローンして無限に増やせるようにするので、透明度を変えるのではなく削除します。
改めて全体を見てみます。
これらのコードは、自分で0から何も見ず打つというより、まずは以下2点が大事です。
これらのコードは、自分で0から何も見ず打つというより、まずは以下2点が大事です。
コピーして組み合わせればこの形にできるかどうか
見たら理解できて、数値や名前のアレンジができるかどうか
たとえば、「 ごみカウント 」を 10 からスタートして 1 ずつ減らすなら、どうなるか考えてみましょう。
正解は以下の通りです。
ゲーム・アプリ制作においては、0 から暗記して打てるかどうかより、このようなアレンジを時間をかけずできるようにしていくことが重要です。
ゲーム・アプリ制作においては、0 から暗記して打てるかどうかより、このようなアレンジを時間をかけずできるようにしていくことが重要です。
コインカウント ごみカウント
count.Value = 10 を追加して10からスタート
+= 1 -+ 1 にして1ずつ減らす
コインとValue変数を作ることができましたか?
3 クローンエリアを作ってみよう
目安時間: 10分
ゲーム上で同じアイテムを何度も出したい時は、いくつも作らず「 クローン 」という名の分身で作ります。
ここでは、クローンのためのエリアを作って、この範囲の中から設定した数だけアイテムがクローンされるようにします。
ここでは、クローンのためのエリアを作って、この範囲の中から設定した数だけアイテムがクローンされるようにします。
動画で確認しよう(クローンエリアの動作)
3-1
コインを舞台裏に隠しておこう
1つのコインを元にしたクローンをいろんな場所に出すとしたら、クローン元のコインは隠しておかねばなりません。
必ずプレイを停止してからコインの1つを、中の Script ごと ReplicatedStorage に移動しておきましょう。
必ずプレイを停止してからコインの1つを、中の Script ごと ReplicatedStorage に移動しておきましょう。
ReplicatedStorage に入ったものは、ステージ上で見えなくなります。
残り2つのコインは削除しておきましょう。
残り2つのコインは削除しておきましょう。
Scratch でもクローンの元は隠して、クローンされたものだけを表示していましたね。
3-2
クローンエリアの元を作ってみよう
Scratch では XY座標 を決めたり「 どこかの場所 」にしていたところですが、Roblox は 3D なので、広すぎて指定が難しいですね。
そこでここでは、クローンエリアというカーペットのようなものを作り、この範囲からコインがクローンされるようにします。
そこでここでは、クローンエリアというカーペットのようなものを作り、この範囲からコインがクローンされるようにします。
完成見本
まずはブロックを作り、好きなサイズに薄く平らに広げて、必ず「 固定 」しておきましょう。
※見本では「 X35 Y1 Z25 」で作っています。
3-3
クローンエリアScriptを入れてみよう
ブロックの名前を「 クローンエリア 」にし、その中にScriptを入れて名前を「 クローンエリアScript 」にしておきましょう。
クローンエリアScript の中身は以下の通りです。
こちらは非常に長いので、コピーして貼り付けましょう。
こちらは非常に長いので、コピーして貼り付けましょう。
Ctrl A で全選択
Ctrl C でコピー
Scriptを開いて元あるコードを消す
Ctrl V で貼り付け
クローンエリアScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
貼り付けできたら、プレイしてコインが数秒ごとにクローンされるか試してみましょう。
Scriptの説明
この Script は、大枠と大事なところだけ説明していきます。
まずこのコードを見た時に、「 while true do 」(ずっと)があることに注目します。
まずこのコードを見た時に、「 while true do 」(ずっと)があることに注目します。
これより上は、最初の1回のみ実行される「 初期設定 」であり、これより下は何度も繰り返す「 ループ 」になっています。
これがわかるだけでも、プログラムの流れを理解しやすくなります。
これがわかるだけでも、プログラムの流れを理解しやすくなります。
まずは初期設定の中から、アレンジできそうなものを説明します。
2行目では、クローンしたいものを「 コイン 」以外にするときは修正が必要です。
ここでも『 ReplicatedStorageにある「コイン」 』を指定していますね。
2行目では、クローンしたいものを「 コイン 」以外にするときは修正が必要です。
ここでも『 ReplicatedStorageにある「コイン」 』を指定していますね。
次に、どのようにクローンするかの設定です。
spawnInterval 変数では、何秒に1度出現するのかを決められます。
maxSpawn 変数では、いくつまで同時に出すかを決められます。
maxSpawn 変数では、いくつまで同時に出すかを決められます。
たとえば、spawnInterval を 0.01 にし、maxSpawn を 300 にすると、すごい速さで300枚のコインが出てきます。
※PCによっては増やしすぎると重くなるので注意してください。
※PCによっては増やしすぎると重くなるので注意してください。
次はループの中ですが、アレンジするようなところは特にありません。
まず、全体の流れは以下の通りです。
まず、全体の流れは以下の通りです。
④のクローン作成については、以下のようにコードだけでクローンを作り、名前を決め、場所を決めています。
プレイしてみると、クローンされたコインと中のScriptは、「 クローン 」という名前で Workspace に入っていきます。
「 TouchInterest 」は自動で入る内部処理なので気にしないでください。
「 TouchInterest 」は自動で入る内部処理なので気にしないでください。
ポイント
クローンエリアを使えば、ユニオンふくめいろんなブロックをクローンできるようになりますが、Model(モデル)には対応していません。
ツールボックスの素材から Model を入手してもクローンできないので気をつけましょう。
ツールボックスの素材から Model を入手してもクローンできないので気をつけましょう。
クローンエリアを作ることができましたか?
4 集めたコイン数でステージを変化させよう
目安時間: 15分
コインのクローンを取った数で、ゲートを消せるようにします。
また、あとどれくらい集めたらカベが破壊できるのかも見えるようにGUIを作ります。
また、あとどれくらい集めたらカベが破壊できるのかも見えるようにGUIを作ります。
動画で確認しよう(カウントゲートの動作)
4-1
カウントゲートとScriptを作ってみよう
まずはゲート(行く手をはばむ門)となるブロックを用意します。
必ずプレイを停止してから、好きな色や素材で出入口におさまるようにブロックを作って、「 固定 」しておきましょう。
必ずプレイを停止してから、好きな色や素材で出入口におさまるようにブロックを作って、「 固定 」しておきましょう。
ブロックの名前を「 カウントゲート 」にし、その中にScriptを入れて名前を「 カウントゲートScript 」にしておきましょう。
カウントゲートScriptの中身は以下の通りです。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
Ctrl A で全選択
Ctrl C でコピー
Scriptを開いて元あるコードを消す
Ctrl V で貼り付け
カウントゲートScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
プレイして、コインを3つひろったらカウントゲートが消えるか確認してみましょう。
Scriptの説明
まず2行目までは、カウントScript と同じく、ReplicatedStorage にある「 コインカウント 」を見つけて count変数 に入れていますね。
5行目は「 countの中身が変わったら 」この中にあるコードを実行する、というものです。
Scratch には無かったしくみですね。
Scratch には無かったしくみですね。
カウントが変わるたび、6-10行目が実行されます。
ここでは、もし「 カウントの値が 3 以上 」なら、透明にしぶつからないようにする、つまり隠しています。
ここでは、もし「 カウントの値が 3 以上 」なら、透明にしぶつからないようにする、つまり隠しています。
Scratch で表すとこのようになりますが、条件式に少し違いがありますね。
テキスト型プログラミングでは、以下のように条件式を書くことになります。
「 >= 」のようにイコールがついていたら、その数もふくむということですね。
また、「 全く同じなら 」を指定したい時は、「 == 」のように2つ打つ必要があります。
「 >= 」のようにイコールがついていたら、その数もふくむということですね。
また、「 全く同じなら 」を指定したい時は、「 == 」のように2つ打つ必要があります。
それでは問題です。
最初は隠して触れないようにしておいて、もし5より大きくなったら表示され触れるブロックになるようアレンジしたいなら、どうすればよいでしょうか?
最初は隠して触れないようにしておいて、もし5より大きくなったら表示され触れるブロックになるようアレンジしたいなら、どうすればよいでしょうか?
書き換えるところは3つでした。このようなアレンジが作れると、はしごや橋などを作ることもできますね。
「 >= 3 」 (3以上) ➡ 「 > 5 」(5より大きい)
「 1 」(透明度100%) ➡「 0 」(透明度0%)
「 false 」(ぶつからない) ➡「 true 」(ぶつかる)
4-2
カウントを表示するホログラムとScriptを作ってみよう
第11回で自由課題になっていたホログラムを活かして、カウントを表示する SurfaceGui を作ります。
今回は素材を用意してあるので、リンクからダウンロードするか、教室素材フォルダから以下の流れで呼び出します。
必ずプレイを停止してから、「 ファイル 」 「 Robloxモデルをインポート 」 「 ホログラム.rbxm 」 を探し選択 「 開く 」
必ずプレイを停止してから、「 ファイル 」 「 Robloxモデルをインポート 」 「 ホログラム.rbxm 」 を探し選択 「 開く 」
パソコンでウィンドウを大きく表示(全画面など)すると、ここに「ダウンロード」ボタンが出てきます。
「ホログラム.rbxm」をダウンロード
※すでに Roblox に保存していた人は、そちらを使ってかまいません。
このホログラムでは、背景を透明にするため TextLabel のプロパティから「 BackgroundTransparency 」を 1 にしてあります。
また、Textは「 0/3 」にしてあります。上限値を変えたい時は、ここを書き換えておきましょう。
また、Textは「 0/3 」にしてあります。上限値を変えたい時は、ここを書き換えておきましょう。
ホログラムが用意できたら、カウントゲートにくっつけましょう。
カウントを進めるたびに、TextLabel の左側の数が変わるようにするため、今回は TextLabel の中に Script を作ります。
名前は「 カウント更新Script 」にしておきましょう。
名前は「 カウント更新Script 」にしておきましょう。
※1階層でもずれたところに作るとうまく動かないので気を付けましょう。
カウント更新Script の中身は以下の通りです。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
余裕があれば自力で打っても良いですし、コピーして貼り付けてもかまいません。
Ctrl A で全選択
Ctrl C でコピー
Scriptを開いて元あるコードを消す
Ctrl V で貼り付け
カウント更新Script
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
貼り付けたらプレイして、コインを取るたびに左側のカウントが増えていくか確認してみましょう。
Scriptの説明
今回のコードはほぼ復習かつコメント通りなので、6行目だけ説明します。
カウントが変わるたびに、6行目のコードで左側の数だけ更新してくれるようになります。
ポイント
テキスト型プログラミングでは、変数や数値ではない「 文字 」は " " をつけてしっかり分けなければなりません。
もし最大値を変えたい時は、以下の赤枠2カ所を修正します。
また、9行目の条件式の数値も変える必要があります。
また、9行目の条件式の数値も変える必要があります。
チャレンジ問題
2つも変えるのは面倒…まちがいが起きそう…と思ったら、プログラムを改良するチャンスです。
新しく変数を作って、値1つを変えるだけで済むようにするとしたら、どうアレンジすれば良いでしょうか?
新しく変数を作って、値1つを変えるだけで済むようにするとしたら、どうアレンジすれば良いでしょうか?
1つの追加と、2つの修正でアレンジができます。変数名はお好みでかまいません。
変数「 max 」を追加して数値を入れておく
/ の右側にあった「 3 」を「 max 」にする
「 >= 3 」 を 「 >= max 」にする
4-3
おさらい + 新しく作るには?
今回は4つのブロックと Script を使いました。
プログラムの流れは以下の通りです。
プログラムの流れは以下の通りです。
もしカウントゲートとホログラムのセットを増やしたいなら、この2つをまとめて複製するとスムーズです。
条件を変えるなら、TextLabel の数値と、Script の数値をアレンジすれば完成です。
条件を変えるなら、TextLabel の数値と、Script の数値をアレンジすれば完成です。
ただし、別なアイテムを追加したい時は、4ブロック全ての複製や修正が必要です。
ここからは、自分の作品で必要になった時に試してみてください。
ここからは、自分の作品で必要になった時に試してみてください。
動画で確認しよう(木材を増やす見本)
新アイテムを作ってから、ReplicatedStorage に移し、カウントScriptを入れる。
ReplicatedStorage に「 IntValue 」を新しく追加して、名前をつける。
クローンエリア・カウントゲート・ホログラムを複製する。
※名前や色を変えるとわかりやすくなります。
※名前や色を変えるとわかりやすくなります。
全ての Script を1行ずつ修正する
クローンエリアScript
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
カウントScript ・ カウントゲートScript ・ カウント更新Script
※コード部分をクリックして、背景が黄色くなったら「 Ctrl + A 」でコード部分のみが選択できます。
カウントゲートとホログラムを作ることができましたか?
5 チェック問題
目安時間: 5~10分
今回学んだことの理解度をクイズで確認しましょう。
学習者情報の入力
6 企画・制作の続き
目安時間: 残り時間
作品完成に向けてがんばりましょう!
作品制作を進めることができましたか?
7 さいごに
目安時間: 5分
7-1
保存方法
発表に向けた作品制作を始めているなら、「名前を付けてRobloxに保存 or 公開」をしておきましょう。
ファイル
名前を付けてRobloxに保存
新しいゲームを制作...
名前を付ける
作成 自動的に再起動されます
7-2
ログアウト
終わるときには、右上の自分のIDから、ログアウトします。
