ForceField

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Un ForceField protegge un Humanoid dal subire danni attraverso il metodo Humanoid:TakeDamage() e protegge un <

Danni e arti

Un ForceField influenza l'istanza a cui è parented to. Quando è parented to a Model , protegge tutte le parti che discendono da quel modello. Se è parented to a BaseParts, le parti congiunte di parte e parte congiunta saranno protette se sia la parte che la parte

ForceField protegge solo Humanoids dal danno inflitti dal metodo Humanoid:TakeDamage() . Gli umanoidi possono essere comunque danneggiati impostando direttamente 0> Class.Humanoid.Health0> . Per questo motivo, si cons

Visualizzazione

Quando ForceField.Visible è impostato su true, viene creato un effetto di particelle. Un insieme di regole determina dove questo effetto verrà emesso:

  • Quando viene aggiunto a un Model , se il modello include un Humanoid chiamato Humanoid con 2>Class.Humanoid.RigType2> impostato su R15, l'effetto viene emesso dalla parte chiamata 5>Torso5> . Altrimenti, l'effetto viene
  • Quando viene affidato a un BasePart l'effetto verrà emesso dal punto di intersezione della parte BasePart.Position .

Campioni di codice

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)

Proprietà

Visible

Lettura Parallela

Determina se è visibile o no l'effetto di parte ForceField . Impostando questo su false ti consente di sostituire l'effetto di parte predefinito con un effetto di parte personalizzato come mostrato nel seguente esempio di codice.

Campioni di codice

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)

Metodi

Eventi