ForceField

Mostrar obsoleto

*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.

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)

Propiedades

Visible

Leer paralelo

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

Esta muestra incluye una función que reemplazará el efecto de partícula de campo de fuerza predeterminado con un efecto que se puede modificar por el desarrollador usando emisores de partículas.

Efecto de campo de fuerza personalizado

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
-- encontrar el torso
local torsoName = humanoid.RigType == Enum.HumanoidRigType.R15 and "UpperTorso" or "Torso"
local torso = character:FindFirstChild(torsoName)
if torso then
-- crear un campo de fuerza
local forceField = Instance.new("ForceField")
forceField.Visible = false -- no visible
-- crear un efecto de partícula
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = true
particleEmitter.Parent = torso
-- escuchar que se elimina el campo de fuerza
forceField.AncestryChanged:Connect(function(_child, parent)
if not parent then
if particleEmitter and particleEmitter.Parent then
particleEmitter:Destroy()
end
end
end)
-- padre del campo de fuerza y establecerlo para que 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)

Métodos

Eventos