ForceField

Pokaż przestarzałe

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

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)

Właściwości

Visible

Odczyt równoległy

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.

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)

Metody

Zdarzenia