ForceField
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un campo de fuerza protege a un de recibir daños infligidos por el método y protege a un de que sus articulaciones se rompan debido a un .Se crea un nuevo Campo de fuerza cuando un personaje aparece en un SpawnLocation y la propiedad SpawnLocation.Duration es mayor que cero.
Daños y articulaciones
Un Campo de fuerza influye en la instancia a la que está asociada.Cuando se padre a un Model , protege todos los BaseParts descendientes de ese aplicación de modelado.Si se patrocina a un BasePart , las juntas de la parte solo se protegerán si tanto la parte como la parte a la que está conectada también contienen un Campo de fuerza .
ForceField solo protege Humanoids de los daños infligidos por el método Humanoid:TakeDamage().Los humanoides aún pueden dañarse al establecer Humanoid.Health directamente.Por esta razón, se recomienda que uses Humanoid:TakeDamage() para asignar daño mientras se tenga en cuenta la protección del campo de fuerza.
Visualización
Cuando ForceField.Visible está configurado como verdadero, se crea un efecto de partículas. Un número de reglas determina desde dónde se emitirá este efecto:
- Cuando se padre a un Model , si el modelo incluye un Humanoid llamado Humanoid con Humanoid.RigType configurado a R15, el efecto se emitirá desde la parte llamada Torso superior .De lo contrario, el efecto se emitirá desde la parte llamada Torso .
- Cuando se asigna a un BasePart el efecto se emitirá desde la parte de BasePart.Position .
Muestras de código
This code sample includes a function that will give a Player a ForceField for a specific duration.
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)
Resumen
Propiedades
Determina si el efecto de partícula ForceField es visible o no.
Propiedades
Visible
Determina si el efecto de partícula ForceField es visible o no.Establecer esto en false te permite reemplazar el efecto de partícula predeterminado con un efecto personalizado como se demuestra en el siguiente ejemplo de código.
Muestras de código
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.
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)