【Roblox Studio】基本的なコーディング #3

Roblox

消えていく床

はじめに

前回、プレイヤーが溶岩の床に触れたらプレイヤーの状態を変化させたけど、今回はプレイヤーが床をふんだら消え始める床を作っていくよ。

準備

前回の続きからつくるなら[移動]と[スケール]をつかって、溶岩の床を長くしよう。今回からつくるなら下の画像を見ながらマネしてみよう。

溶岩の床拡張

消えていく床の作成

  1. パーツを追加して、「FadingPlatform」という名前に変更。
  2. スクリプトを追加して、「FadeOnTouch」という名前に変更。
FadingPlatform
  1. スクリプトを開いて、デフォルトのコード(初めから書かれているコード)を削除。
  2. FadingPlatformの変数とTouchedイベントに接続された空の関数を作成。
local platform = script.Parent
 
local function fade()
 
end
 
platform.Touched:Connect(fade)

forループ

前々回、whileループをつかって3秒ごとに消えて再び現れる繰り返し処理をやったけど、今回は段階的にプラットフォームの透明度を0→1に変えて消えていくようにしたいんだ。

forループを使うとシンプルに書くことができるよ。

for count = 1(開始), 10(終了), 1(増分)

count変数に1から開始して、増分1(1ずつ増やして)、10になるまで繰り返す。

増分は1なら省略もできるよ。

  1. fade関数の中に、10回繰り返すforループを作成。
  2. forループの中に、Transparency(透明度)プロパティにcount変数を10で割り算した値を設定。
  3. 0.1の時間を待機するwait関数の呼び出し。
local platform = script.Parent
 
local function fade()
	for count = 1, 10 do
		platform.Transparency = count / 10
		wait(0.1)
	end
end
 
platform.Touched:Connect(fade)

ループが実行されるとcount変数の値が1ずつ増える。すると透明度がcount変数の値を10で割った0.1ずつ増えるようにしてるから、透明度が0.1から1まで増えたときに完全に透明になるってことだね。

ループが終わってプラットフォームが完全に透明になったら、プレイヤーが通り抜けて下に落ちるようにしないといけないね。それからプラットフォームが消えたあと3秒たったら透明度を0にもどして通り抜けないようにしよう。

  1. forループのあとに、プラットフォームのCanCollideプロパティ(ぶつかるか通り抜けるかの設定)をfalseに設定。
  2. wait関数を呼び出して3秒待つ。
  3. プラットフォームのCanCollideプロパティをtrueに戻す。
  4. プラットフォームのTransparencyプロパティ(透明度)を0に戻す。
local platform = script.Parent
 
local function fade()
	for count = 1, 10 do
		platform.Transparency = count / 10
		wait(0.1)
	end
      platform.CanCollide = false
	wait(3)
	platform.CanCollide = true
	platform.Transparency = 0
end
 
platform.Touched:Connect(fade)

問題点の見直し

プラットフォームのTouchedイベントはプレイヤーのパーツの一部がプラットフォームに触れるときに実行される仕組みだから、このままだとプレイヤーが走ってプラットフォームを移動したらfade関数が何回も呼ばれちゃうんだ。

だからfade関数が呼ばれるのはプレイヤーが初めに触れた1回だけにしないとね。

ブール変数

ブール変数はブール値(truefalseのどちらか)しか保存できない変数だよ。

  1. isTouched(ブール)変数にtrueを設定。
  2. fade関数の中身の処理は、isTouched変数がtrueのときだけ実行されるようにif文で囲む。
  3. if文の処理に入ったら、連続で実行されないようにisTouched変数をfalseに変更。
  4. forループが終わって、プラットフォームの復元まで終わったらisTouched変数をtrueに戻す。
local platform = script.Parent
 
local isTouched = true
 
local function fade()
       if isTouched then
            isTouched = false
	    for count = 1, 10 do
		    platform.Transparency = count / 10
		    wait(0.1)
	    end
	    platform.CanCollide = false
	    wait(3)
	    platform.CanCollide = true
	    platform.Transparency = 0
            isTouched = true
	end
end
 
platform.Touched:Connect(fade)

こうすることで、プレイヤーの2歩目3歩目に連続で反応しなくなるし、3秒後に戻ってきてもう一度反応させることもできるね。

今回は以上です。お疲れ様でした~。

プラットフォームを増やしたり、幅を変えたりして、難易度を調整してみてね。

消えていく床

以上の手順は↓の英語サイトを日本の小中学生でもわかるように、できるだけやさしく解説してみました。

ERROR: The request could not be satisfied

コメント

タイトルとURLをコピーしました