ForceField
*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.
Pole siłowe chroni przed otrzymaniem obrażeń zadanych za pomocą metody i chroni przed złamaniem stawów z powodu .Nowe Pole siłowe powstaje, gdy postać pojawia się na SpawnLocation i właściwość SpawnLocation.Duration jest większa niż zero.
Obrażenia i stawy
A Pole siłowe wpływa na instancję, której jest rodzicem.Gdy zostanie przydzielony do Model , chroni wszystkie BaseParts spadające z tego modelu.Jeśli zostanie przypisany do BasePart, połączenia części będą chronione tylko wtedy, gdy zarówno część, jak i połączona z nią część, będą zawierać również Pole siłowe .
Pole siłowe chroni tylko Humanoids przed obrażeniami zadanymi przez metodę Humanoid:TakeDamage().Humanoidy nadal mogą być uszkodzone poprzez ustawienie Humanoid.Health bezpośrednio.Z tego powodu zaleca się, abyś użył Humanoid:TakeDamage() do przypisania obrażeń, uwzględniając ochronę pola siłowego.
Wizualizacja
Gdy ForceField.Visible jest ustawiony na prawdę, tworzy się efekt cząsteczkowy. Kilka zasad określa, skąd ten efekt będzie emitowany:
- Gdy zostanie przypisany do Model , jeśli model zawiera Humanoid o nazwie Humanoid z ustawionym Humanoid.RigType na R15, efekt zostanie wyemitowany z części o nazwie Górna część tułowia .W przeciwnym razie efekt zostanie wyemitowany z części o nazwie Tułów .
- Gdy zostanie przypisany do BasePart efekt zostanie wyemitowany z części BasePart.Position.
Przykłady kodu
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)
Podsumowanie
Właściwości
Określa, czy efekt cząsteczki ForceField jest widoczny, czy nie.
Właściwości
Visible
Określa, czy efekt cząsteczki ForceField jest widoczny, czy nie.Ustawienie tego na false pozwala zastąpić domyślny efekt cząsteczek efektem niestandardowym, jak pokazano w następnym przykładzie kodu.
Przykłady kodu
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)