ForceField

Visualizza obsoleti

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

Un Campo di Forza protegge un Humanoid da danni inflitti attraverso il metodo Humanoid:TakeDamage() e protegge BaseParts da avere le articolazioni rotte a causa di un Explosion .Un nuovo Campo di Forza viene creato quando un personaggio si genera su un SpawnLocation e la proprietà SpawnLocation.Duration è maggiore di zero.

Danni e articolazioni

Un Campo di Forza influenza l'istanza a cui è parented.Quando è genitoriale a un Model , protegge tutto il BaseParts discendente da quel modello.Se parented a un BasePart , le articolazioni della parte saranno protette solo se sia la parte che la parte a cui è connessa contiene anche un ForceField .

ForceField protegge solo Humanoids dal danno inflitto dal metodo Humanoid:TakeDamage().Gli umanoidi possono ancora essere danneggiati impostando Humanoid.Health direttamente.Per questo motivo, si consiglia di utilizzare Humanoid:TakeDamage() per assegnare danni mentre si tiene conto della protezione del campo di forza.

Visualizzazione

Quando ForceField.Visible è impostato su vero, viene creato un effetto di particelle. Un certo numero di regole determina da dove verrà emesso questo effetto:

  • Quando è genitorato a un Model , se il modello include un Humanoid chiamato Humanoid con Humanoid.RigType impostato su R15, l'effetto verrà emesso dalla parte chiamata Torso Superiore .Altrimenti, l'effetto verrà emesso dalla parte chiamata Torso .
  • Quando parente a un BasePart l'effetto verrà emesso dalla parte di BasePart.Position .

Campioni di codice

This code sample includes a function that will give a Player a ForceField for a specific duration.

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 l'effetto particella ForceField è visibile o meno.Impostare questo a false ti consente di sostituire l'effetto delle particelle predefinito con un effetto personalizzato come dimostrato nel seguente esempio di codice.

Campioni di codice

This sample includes a function that will replace the default ForceField particle effect with an effect using ParticleEmitters that can be modified by the developer.

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