Robloxでスクリプトを利用してForceFieldを適用し、一定時間無敵になる

RobloxではSpawnLocationでのパラメータを変更することでSpawn時にForceFieldを適用することができるが、適用時間が切れてしまうとダメージを受けるようになってしまう。そこでパーツに触れることでForceFieldを生成できるようにする。

パーツを作成

ブロックパーツを作成、色を変更し、名前をApplyForceFieldBlockに変更する

スクリプトの作成

パーツの配下にスクリプトを作成、名前をApplyForceFieldに変更する

スクリプトを以下のように編集する

-- パーツを取得
local part = script.Parent
-- パーツに触れたときに呼び出される
local function onPartTouch(otherPart)    
	local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
	if humanoid then                
		-- ForceFieldを持っていたら何もしない
		if humanoid.Parent:FindFirstChild("ForceField") then
			return
		end

		-- ForceFieldを作成して、プレイヤーに適用する
		local forceField = Instance.new("ForceField")
		forceField.Parent = humanoid.Parent
		print("add field")

		-- 5秒後にForceFieldを削除する
		wait(5)
		forceField:Destroy()        
	end
end
-- パーツに触れたときのイベントを登録する
part.Touched:Connect(onPartTouch)

結果

関連