ForceField 는 Humanoid 에서 입히는 피해를 보호하고 피해를 입은 Class.Humanoid:Take
손상 및 관절
ForceField 는 그 자식이 부모인 인스턴스에 영향을 줍니다. 부모인 인 Model 에 부모인 경우, 그 부모는 모든 BaseParts 를 보호합니다. 부모인 인
ForceField 는 단지 Humanoids 에게 입히는 피해를 보호합니다. 인간형은 여전히 직접 설정으로 피해를 입을 수 있습니다. 이 때문에 인간형 보호 기능을 사용하는
시각화
Class.ForceField.Visible가 진실로 설정되면 입자 효과가 생성됩니다. 여러 규칙은 이 효과가 어디에서 방출되는지 결정합니다.
- Class.Model 에 부모로 지정된 경우, 모델에 Humanoid 라는 이름의 인간형을 포함하고 Class.Humanoid.RigType 를 R15로 설정한 인간형을 위에서 방출하면 효과가 발생합니다
- Class.BasePart 에 부모로 지정될 때 효과는 부모의 BasePart.Position에서 발생합니다.
코드 샘플
ForceField Instantiation
local Players = game:GetService("Players")
local FORCE_FIELD_DURATION = 15
local function giveForcefield(player, duration)
local character = player.Character
if character then
local forceField = Instance.new("ForceField")
forceField.Visible = true
forceField.Parent = character
if duration then
task.delay(duration, function()
if forceField then
forceField:Destroy()
end
end)
end
end
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(_character)
giveForcefield(player, FORCE_FIELD_DURATION)
end)
end
Players.PlayerAdded(onPlayerAdded)
요약
속성
Visible
Class.ForceField 입자 효과가 표시되는지 여부를 결정합니다. 이것을 false로 설정하면 다음 코드 샘플에 표시된 것처럼 사용자 정의 입자 효과를 대체할 수 있습니다.
코드 샘플
Custom ForceField Effect
local Players = game:GetService("Players")
local FORCE_FIELD_DURATION = 15
local function createCustomForcefield(player, duration)
local character = player.Character
if character then
local humanoid = character:FindFirstChild("Humanoid")
if humanoid then
-- find the torso
local torsoName = humanoid.RigType == Enum.HumanoidRigType.R15 and "UpperTorso" or "Torso"
local torso = character:FindFirstChild(torsoName)
if torso then
-- create a forcefield
local forceField = Instance.new("ForceField")
forceField.Visible = false -- not visible
-- create a particle effect
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = true
particleEmitter.Parent = torso
-- listen for the forcefield being removed
forceField.AncestryChanged:Connect(function(_child, parent)
if not parent then
if particleEmitter and particleEmitter.Parent then
particleEmitter:Destroy()
end
end
end)
-- parent the forcefield and set it to expire
forceField.Parent = character
if duration then
task.delay(duration, function()
if forceField then
forceField:Destroy()
end
end)
end
end
end
end
end
local function onPlayerAdded(player)
player.CharacterAdded:Connect(function(_character)
createCustomForcefield(player, FORCE_FIELD_DURATION)
end)
end
Players.PlayerAdded(onPlayerAdded)