ForceField

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Un champ de force protège un Humanoid de subir des dommages infligés par la méthode Humanoid:TakeDamage() et protège BaseParts de voir leurs articulations cassées en raison d'un Explosion .Un nouveau champ de force est créé lorsqu'un personnage apparaît sur un SpawnLocation et que la propriété SpawnLocation.Duration est supérieure à zéro.

Dommages et jointures

Un champ de force influence l'instance à laquelle il est associé.Lorsqu'il est parenté à un Model , il protège tous les BaseParts descendant de ce modèlisation.Si elle est parentée à un BasePart , les articulations de la partie ne seront protégées que si la partie et la partie à laquelle elle est connectée contiennent également un champ de force .

Le champ de force ne protège que Humanoids des dommages infligés par la méthode Humanoid:TakeDamage().Les humanoïdes peuvent toujours être endommagés en définissant Humanoid.Health directement.Pour cette raison, il est conseillé d'utiliser Humanoid:TakeDamage() pour attribuer des dommages tout en tenant compte de la protection du champ de force.

Visualisation

Lorsque ForceField.Visible est défini sur true, un effet de particule est créé. Un certain nombre de règles détermine d'où cet effet sera émis :

  • Lorsqu'il est parenté à un Model , si le modèle inclut un Humanoid nommé Humanoid avec Humanoid.RigType défini sur R15, l'effet sera émis de la partie nommée Torso supérieur .Sinon, l'effet sera émis de la partie nommée Torso .
  • Lorsqu'il est parenté à un BasePart l'effet sera émis de la partie BasePart.Position .

Échantillons de code

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)

Propriétés

Visible

Lecture parallèle

Détermine si l'effet de particule ForceField est visible ou non.Définir ceci à false vous permet de remplacer l'effet de particule par défaut par un effet personnalisé comme le montre l'exemple de code suivant.

Échantillons de code

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éthodes

Évènements