初心者からはじめるゲームの作り方講座 ~基本的なコーディング編⑦:触れると消える床~
こんにちは!かけるるです。
初心者向けにRobloxStudioでのゲームの作り方を紹介します。
今回は、一度触れると消えていく床を作ります。
(完全に消えるまで復活しません)
画像をたくさん使用して紹介しますが、わかりにくかったら
感想欄にコメントください_(._.)_
前回までの講座はこちらです⇩
●●●●●●●●●●●●●●●●●●●●●●●●
自動で消えたり現れたりする床の説明⇩
触れるとゲームオーバーになる床の説明⇩
触れると消える床の説明⇩
●●●●●●●●●●●●●●●●●●●●●●●●
早速始めましょう!
デバウンスとは
触れるとゲームオーバーになる床のコースでは、プレイヤーの体の一部がパーツに接触するたびにTouchedイベントが実行されることを学びましたね。
しかし、この動作は、プレイヤーが消えゆく床の上を走ったときに問題を引き起こします。この関数は複数回実行され、そのたびにループがリセットされます。
このコードを正しく動作させるには、プレーヤーが消える床に初めて触れたときに、関数を1回だけ実行する必要があります。このように、複数回実行されるアクションを一度だけ実行させることをデバウンスと呼びます。
デバウンス変数
関数をデバウンスするには、ブーリアン変数を使用して、プラットフォームがすでにタッチされているかどうかを追跡することができます。
ブーリアンとは、trueとfalseという値しか持たないという意味です。
isTouchedという変数を作成し、falseに設定します。
local platform = script.Parent
local isTouched = false
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)
変数をチェックする
ifステートメントを使用すると、デバウンス変数isTouchedがfalseの場合にのみfade関数内のコードを実行することができます。
フェード関数の本体を、not isTouchedという条件付きのif文で囲みます。
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
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
end
platform.Touched:Connect(fade)
デバウンスの切り替え
現在、fade関数内のコードは、isTouchedがfalseであり、isTouchedがtrueと評価されないため、常に実行されることになります。デバウンスルーチンを完成させるには、2箇所で変数の値をトグルさせる必要があります。
プラットフォームがフェードし始める前に、if文の内部でisTouchedをtrueに設定します。
プラットフォームが再び現れたら、この変数をfalseに戻す。
local function fade()
if not isTouched then
isTouched = true
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 = false
end
end
platform.Touched:Connect(fade)
以上です。プレイヤーが飛び乗るとプラットフォームが消えていき、数秒後に戻ってくることがわかるはずです。
このプラットフォームをより広い間隔で複製して、難易度の高い障害物を作り、フェードアウトする速度を変えて難易度のバランスを取ることができます。
最終コードはこちらです⇩
local platform = script.Parent
local isTouched = false
local function fade()
if not isTouched then
isTouched = true
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 = false
end
end
platform.Touched:Connect(fade)
以上、初心者からはじめるゲームの作り方講座
~基本的なコーディング編⑦:触れると消える床~でした。
参考になったらスキボタン ♡⇒♥
よろしくお願いします!
オリジナル
#タダスキルライブラリー投稿内容
#RobloxStudio #ロブロックス #はじめての
この記事が気に入ったらサポートをしてみませんか?