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)
요약
속성
Class.ForceField 입자 효과가 표시되는지 여부를 결정합니다.
속성
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)