ForceField

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Um Campo de Força protege um Humanoid de receber dano causado pelo método Humanoid:TakeDamage() e protege BaseParts de ter suas articulações quebradas devido a um Explosion .Um novo Campo de Força é criado quando um personagem aparece em um SpawnLocation e a propriedade SpawnLocation.Duration é maior que zero.

Danos e Juntas

Um Campo de Força influencia a instância a que pertence.Quando pai de um Model , protege todo o BaseParts que desce desse modelo.Se for parente de um BasePart, as juntas da peça só serão protegidas se tanto a peça quanto a peça a que ela está conectada também conterem um Campo de Força .

ForceField protege apenas Humanoids de danos causados pelo método Humanoid:TakeDamage().Humanóides ainda podem ser danificados ao definir Humanoid.Health diretamente.Por esse motivo, é aconselhável que você use Humanoid:TakeDamage() para atribuir dano enquanto contabiliza a proteção do campo de força.

Visualização

Quando ForceField.Visible é definido como verdadeiro, um efeito de partícula é criado. Um número de regras determina de onde esse efeito será emitido:

  • Quando parente para um Model , se o modelo incluir um Humanoid chamado Humanoid com Humanoid.RigType definido para R15, o efeito será emitido da parte chamada Torso Superior .Caso contrário, o efeito será emitido da peça chamada Torso .
  • Quando parente a um BasePart o efeito será emitido a partir da parte de BasePart.Position .

Amostras 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)

Propriedades

Visible

Ler Parallel

Determina se o efeito de partícula ForceField é visível ou não.Definir isso para false deixa você substituir o efeito de partícula padrão por um efeito personalizado, como demonstrado no seguinte exemplo de código.

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

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)

Métodos

Eventos