コーディング入門
コーティングっていうのは、プログラムを書くこと。Robloxでは、Luaというプログラミング言語でコーディングすることでパーツに動きをつけたり、いろいろなことができるようになるんだ。
ここでは、スクリプト(プログラム)を使ってプラットフォームを消したり出現させたりしてみるよ。
シーンの設定
プレイヤーが3秒おきに消えたり現れたりするプラットフォームにタイミングよく飛び移るシーンをつくっていくよ。
- スポーンロケーションと四角いプラットフォームをぎりぎり飛び移れないくらい間をあけよう。
やり方をわすれたら↓を復習しよう。
- 2つのプラットフォームの間にパーツを置いて飛び移れるようにしよう。
- ちゃんと飛び移れるか、こまめにプレイテストしよう。
- スクリプトから新しく追加したパーツを指定できるように、パーツに「DisappearingPlatform」のような名前をつけよう。(名前を変えるPartを間違えないようにね!選択されたパーツはエクスプローラで青色になってよ。)
スクリプトの追加
新しく追加したパーツにスクリプトを追加するよ。
- エクスプローラで新しく追加したパーツのをクリック。
- メニューから[スクリプト]を選択。
- 追加されたスクリプトの名前を変更。
変数
最後に追加したパーツの変数をつくって、スクリプトから何度でも使えるようにするよ。
Luaでは、変数は次のように書くんだ。local 変数名 = 値
localっていうのは、このスクリプトの中だけで使いますというしるし。
変数名 = 値 っていうのは、左の変数に右の値を設定してるんだ。
- 追加したDisappearスクリプトをダブルクリック。
- Disappearスクリプトが開いたら、すでに書いてあるコードを消して次のように入力。
local platform = script.Parent
script.Parent
は、スクリプトが追加されているオブジェクト(今回は最後に追加したパーツDisappearingPlatform)を見つけるための書き方。
書き方のルールだから悩まないでいいよ。
とりあえず、こう書いておくことで、このスクリプトの中でplatformって書けば、スクリプトを追加したパーツを指定できるって覚えよう。
あと、変数名は自由に決めていいけど、自分で何の変数かわかる名前にしよう。
変数名は日本語と空白が書けないから英単語を並べて書くんだけど、全部小文字だと単語の切れ目がわからないよね?だから単語の先頭を大文字にするといいよ。(oneTwoThree)
関数
スクリプトを追加したパーツ(DisappearingPlatform)を消すアクションを書いていくよ。
特定のアクションを何度も実行できるように、書いたコードに名前をつけてグループ化したものを関数っていうんだ。
指定したパーツを消す関数の作成
Disappearスクリプトに下の2行を追加してみよう。
local platform = script.Parent local function disappear() end
localっていうのは、変数と同じでこの関数もこのスクリプトの中だけで使いますというしるし。
「fanction」はこれから関数を書きますというしるし。
「disappear」は関数名で、変数と同じように自分がわかりやすい名前を決めていいよ。
次のカッコは、今は関数の書き方のルールだと覚えよう。
次にカッコと「end」の間にアクションとなるコードを書いていくよ。
パーツのプロパティ
関数の中身を書く前に、最後に追加したパーツ(DisappearPlatform)をどうしたいか考えよう。
このパーツは数秒おきに見えなくして、プレイヤーが飛び移っても通り抜けるようにしたいね。
パーツを選択して「プロパティ」ウィンドウを見ると、いろいろなプロパティがあることがわかるよ。
[Transparency]プロパティ(透明度の設定)を0から1に変更すると、パーツを見えなくすることができるよ。
[Cancollide]プロパティ(衝突の設定)をOFFに変更すると、突き当らなくなってプレイヤーが通り抜けるよ。
ここでは「プロパティ」ウィンドウではなく、スクリプトで設定を変更したいので、↑の設定はしなくていいよ。
disappear関数に下の2行を追加しよう。(1段右にづらすと見やすいよ)
local platform = script.Parent
local function disappear()
platform.CanCollide = false
platform.Transparency = 1
end
指定したパーツの変数の衝突設定を「false」
指定したパーツの変数の透明度設定を「1」
ここで指定したパーツを何回も指定したいから、1行目にplatform変数を宣言したんだね。
関数の呼び出し
関数は作っただけでは実行されないよ。
関数名()を指定して呼び出す必要があるんだ。
- スクリプトの最後に1行追加しよう。
local platform = script.Parent
local function disappear()
platform.CanCollide = false
platform.Transparency = 1
end
disappear()
- [プレイ]ボタンをクリックして、コードをテストしよう。プレイヤーがスポーンするまでにDisappearingPlatformが消えているはずだよ。
消したパーツを出現させる関数の作成
disappear関数と反対に、消したパーツを再び出現させるappear関数をつくるよ。
- disappear()関数の呼び出しを削除。
- appear関数の作成
local platform = script.Parent
local function disappear()
platform.CanCollide = false
platform.Transparency = 1
end
local function appear()
platform.CanCollide = true
platform.Transparency = 0
end
指定したパーツの[CanCollide]プロパティをtrueに設定し、[Transparency]プロパティを0に設定
ループ
指定したパーツ(DisappearingPlatform)を数秒おきに消したり出現させたりするためには、disappear関数とappear関数を交互に呼び出したいけど、無限に関数の呼び出しを書くことはできないんだ。
でも、whileループを使えば無限に繰り返し実行できるよ。
whileループの宣言
whileの後に条件を書けるけど、trueにすれば無限実行になるよ。そのあとのdoとendで囲まれた部分に繰り返し実行するコードを書くんだ。
local platform = script.Parent
local function disappear()
platform.CanCollide = false
platform.Transparency = 1
end
local function appear()
platform.CanCollide = true
platform.Transparency = 0
end
while true do
end
whileループの繰り返し処理
- disappear関数の呼び出し
- wait関数の呼び出し
- appear関数の呼び出し
- wait関数の呼び出し
local platform = script.Parent
local function disappear()
platform.CanCollide = false
platform.Transparency = 1
end
local function appear()
platform.CanCollide = true
platform.Transparency = 0
end
while true do
wait(3)
disappear()
wait(3)
appear()
end
wait関数は自分で作らなくてもはじめから使える関数(組み込み関数)なんだ。カッコ内に指定した秒数を待ってから次のコードを実行してくれるよ。
whileループ内の処理は高速で実行されるから、wait関数を実行しないとパソコンやスマホに他の処理をする時間がなくなってフリーズしちゃうよ。
プレイテスト
書いたコードをチェックしたらプレイテストしてみよう。
DisappearingPlatformのパーツが消えなかったり、出現しなかったりするなら、タイプミスしてるかもしれないよ。変数名や関数名は、大文字小文字も完全に同じじゃないと動かないから注意だね。
消えてない3秒間で向こう側に飛び移れたら成功だよ。
以上の手順は↓の英語サイトを日本の小中学生でもわかるように、できるだけやさしく解説してみました。
次はプレイヤーがふんだら死んでしまう溶岩の床を作っていくよ。
コメント