見出し画像

初心者からはじめるゲームの作り方講座 ~基本的なコーディング編⑦:触れると消える床~

こんにちは!かけるるです。
初心者向けに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ステートメントを使用すると、デバウンス変数isTouchedfalseの場合にのみ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)

ネゲート演算子
Luaのnot演算子は、その後に続くものの値を反転させます。条件式で言うと、左側のif文と右側のif文が同じ動きをすることを意味する。

デバウンスの切り替え

現在、fade関数内のコードは、isTouchedfalseであり、isTouchedtrueと評価されないため、常に実行されることになります。デバウンスルーチンを完成させるには、2箇所で変数の値をトグルさせる必要があります。

プラットフォームがフェードし始める前に、if文の内部でisTouchedtrueに設定します。

プラットフォームが再び現れたら、この変数を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)



以上、初心者からはじめるゲームの作り方講座
~基本的なコーディング編⑦:触れると消える床~でした。

参考になったらスキボタン ♡⇒♥ 
よろしくお願いします!

  1. オリジナル
    #タダスキルライブラリー

  2. 募集中のお題企画
    #つくってみた #ゲームの作り方

  3. 投稿内容
    #RobloxStudio #ロブロックス #はじめての

  4. 人気
    #タコボンド #イカゲーム

この記事が気に入ったらサポートをしてみませんか?