In Introduction to Roblox Studio, you learned how to create and manipulate parts in Roblox Studio. In this tutorial, you'll learn how to apply a script to parts to make a platform appear and disappear. You can use this in a platforming game to span a gap, challenging users to time their jumps carefully to get to the other side.
シーンを設定する
まず、プラットフォームとして機能するPartが必要です。パーツの作成と移動は、Introduction to Roblox Studioから学んだことがあるはずです。プラットフォーム以外に複雑な世界は必要ありません — ユーザーが簡単にジャンプできないギャップが必要です。
Partを挿入し、名前をDisappearingPlatformに変更します。
ユーザーがジャンプできるのに十分な大きさにサイズを変更します。
ゲームをプレイテストする際にアクセスでき、ジャンプできる適切な場所に移動します。

PropertiesウィンドウでAnchoredプロパティをtrueに設定します。

スクリプトを挿入する
Robloxのコードは、Explorer内のさまざまなコンテナにスクリプトとして配置できるLuauという言語で書かれています。Partの下にスクリプトを置くと、パーツがゲームに読み込まれたときにそのスクリプトのコードが実行されます。
ExplorerウィンドウでDisappearingPlatformパーツの上にカーソルを合わせ、プラットフォームに新しいスクリプトを挿入するために**+ボタンをクリックします。新しいスクリプトの名前をDisappear**に変更します。

デフォルトのコードを削除します。
最初の変数
スクリプトの最初にプラットフォーム用の変数を作成するのは良いアイデアです。変数は値に関連付けられた名前です。変数が作成されると、何度でも使用できます。必要に応じて値を変更できます。
Luauでは、変数は次のように作成されます: local variableName = variableValue。
localという用語は、その変数が宣言されたスクリプトのブロック内でのみ使用されることを意味します。=記号は変数の値を設定するために使用されます。変数の名前は通常キャメルケースで書かれます。これは、最初の単語が小文字で、以降の単語が大文字で始まる形式です。justLikeThisのように。
次のコードをコピーして、プラットフォーム用の変数をplatformという名前で作成します。値はscript.Parentです。
local platform = script.Parent消える関数
プラットフォームを消す時間です。特定のアクションを達成するためのコードを関数にまとめるのが最善です。関数は、コードを整理し、再度書かずに複数の場所で使用できるようにするための名前付きコードブロックです。スクリプト内に関数を作成し、disappearと呼びます。
local platform = script.Parent
local function disappear()
end最初の新しい行は関数を宣言します — これは関数の開始を示し、disappearという名前を付けます。関数のコードは最初の行とendの間に入ります。
括弧は、必要に応じて追加情報を含めるためのものです。関数に情報を渡す方法については、後のコースで学びます。
パーツのプロパティ
プラットフォームが消えるとき、それは見えなくなり、ユーザーはその上を通り抜ける必要があります — しかし、プラットフォームを単に破壊することはできません。後で再表示する必要があるからです。
パーツには、ここで使用できるさまざまなプロパティがあります。パーツを選択し、Propertiesウィンドウを見れば、そのプロパティを確認できます。
パーツを見えなくするには、Transparencyプロパティを変更します。透明度は0から1の間の値で、1は完全に透明でしたがって見えません。
CanCollideプロパティは、他のパーツ(およびユーザー)がそのパーツを通り抜けることができるかどうかを決定します。これをfalseに設定すると、ユーザーはプラットフォームを通り抜けます。
script.Parentと同様に、プロパティはドットを使用してアクセスします。値は等号を使用して割り当てられます。
disappear関数内で、プラットフォームのCanCollideプロパティをfalseに設定します。
次の行で、Transparencyプロパティを1に設定します。
local platform = script.Parentlocal function disappear()platform.CanCollide = falseplatform.Transparency = 1end
関数を呼び出す
関数を宣言したら、その名前の横に括弧を付けて書くことで実行できます。たとえば、disappear()はdisappear関数を実行します。これは関数を呼び出すこととして知られています。
スクリプトの最後でdisappear関数を呼び出します。
local platform = script.Parentlocal function disappear()platform.CanCollide = falseplatform.Transparency = 1enddisappear()プレイテストを開始します。コードが機能すれば、ユーザーがスポーンする時点でプラットフォームが消えているはずです。
現れる関数
プラットフォームを再表示させるのは、disappear関数の正反対のことを行う関数を書くことで簡単にできます。
スクリプトからdisappear()行を削除します。
appearという新しい関数を宣言します。
関数の本体で、CanCollideプロパティをtrueに、Transparencyプロパティを0に設定します。
local platform = script.Parentlocal function disappear()platform.CanCollide = falseplatform.Transparency = 1endlocal function appear()platform.CanCollide = trueplatform.Transparency = 0end
ループコード
プラットフォームは常に消えたり再表示されたりする必要があり、各変更の間に数秒の間隔が必要です。無限の関数呼び出しを書くことは不可能ですが、whileループを使えばそれを避けることができます。
whileループは、whileの後のステートメントが真である限り、内部のコードを実行します。この特定のループは永遠に実行する必要があるので、ステートメントは単にtrueにします。スクリプトの最後にwhile trueループを作成します。
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ループ内で、プラットフォームが消えたり再表示されたりする間に数秒待つコードを書く必要があります。
組み込み関数task.wait()を使用できます。括弧内には待機する秒数が必要です。たとえば、task.wait(3)のように。
3秒は、各プラットフォーム状態の間の時間の長さとして適切な出発点です。
- whileループ内で、括弧内に3を指定してtask.wait()関数を呼び出します。
- disappear関数を呼び出します。
- 再度、括弧内に3を指定してtask.wait()関数を呼び出します。
- appear関数を呼び出します。
while true do
task.wait(3)
disappear()
task.wait(3)
appear()
endプラットフォームのコードはこれで完成です!今すぐコードをテストしてみてください。プラットフォームは3秒後に消え、3秒後に再表示されるはずです。
このプラットフォームを複製してより広いギャップをカバーすることもできますが、各スクリプトの待機時間を変更する必要があります。そうしないと、すべてのプラットフォームが同時に消えてしまい、ユーザーは渡ることができなくなります。
最終コード
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
task.wait(3)
disappear()
task.wait(3)
appear()
end