ForceFieldで無敵時間を適用する

RobloxではForceFieldを利用することでSpawn時に無敵時間を適用することができる

ForceFieldとは

いわゆるバリア、これが有効になっているときはHumanoid:TakeDamageによるダメージやExplosionによる爆破からプレイヤーを守る

ダメージブロックの作成

プレイヤーが触れたらダメージを受けるブロックを作成する

ForceFieldの適用

SpawnLocationを選択、プロパティのForceFieldに無敵時間の秒数を入力する

結果

スポーンしてから10秒間はダメージブロックに触れてもダメージを受けない

注意

ForceFieldが防ぐダメージはHumanoid:TakeDamageによるものだけであり、Humanoid.Healthに対して直接値を入力してダメージを与える場合は防御が機能しない。その時はキャラクターのモデルがDistanceFieldを持っているかどうかを判別して、持っている場合はHealthの更新を行わない、などの処理が必要。

-- パーツを取得
local part = script.Parent

-- パーツに触れたときに呼び出される
local function onPartTouch(otherPart)    
	-- 触れた対象がプレイヤーかどうかを判断する
	local humanoid = otherPart.Parent:FindFirstChild("Humanoid")
	if humanoid then
		local characterModel = humanoid.Parent
		-- キャラクターがForceFieldを持っていなかったら体力を10減らす
		if not characterModel:FindFirstChildOfClass("ForceField") then
			humanoid.Health = humanoid.Health - 10
		end

	end
end
-- パーツに触れたときのイベントを登録する
part.Touched:Connect(onPartTouch)

関連

https://developer.roblox.com/en-us/api-reference/class/ForceField

https://developer.roblox.com/en-us/api-reference/class/Humanoid