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
Ten przykład zawiera funkcję, która zastąpi domyślny efekt cząstek pola siłowego efektem wykorzystującym emiterki cząstek, które może zmodyfikować programista.
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
-- znajdź tułów
local torsoName = humanoid.RigType == Enum.HumanoidRigType.R15 and "UpperTorso" or "Torso"
local torso = character:FindFirstChild(torsoName)
if torso then
-- stwórz pole siłowe
local forceField = Instance.new("ForceField")
forceField.Visible = false -- niewidoczne
-- stwórz efekt cząsteczkowy
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = true
particleEmitter.Parent = torso
-- słuchaj pola siłowego, które jest usuwane
forceField.AncestryChanged:Connect(function(_child, parent)
if not parent then
if particleEmitter and particleEmitter.Parent then
particleEmitter:Destroy()
end
end
end)
-- opiekun polem siłowym i ustaw go na wygasanie
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)