ForceField

Artık kullanılmayanları göster

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

Bir Güç Alanı bir Humanoid 'nin Humanoid:TakeDamage() yöntemiyle verilen hasara maruz kalmasını engeller ve bir BaseParts 'nin ortaklarının bir Explosion nedeniyle kırılmasını engeller.Bir karakter bir Güç Alanı üzerinde ortaya çıktığında ve SpawnLocation özelliği sıfırdan büyük olduğunda yeni bir SpawnLocation.Duration oluşturulur.

Hasar ve Eklemler

Bir Güç Alanı , ebeveyn olduğu örneği etkiler.Bir Model ebeveyn alındığında, bu modelden aşağıya giden tüm BaseParts korunur.Ebeveynliği bir BasePart 'a yapılırsa, parçanın eklemleri yalnızca parça ve bağlantılı olduğu parça da bir Güç Alanı içerdiği takdirde korunur.

Güç Alanı yalnızca Humanoids tarafından verilen hasardan korur Humanoid:TakeDamage() yöntemi tarafından.İnsansızlar doğrudan ayarlayarak hala hasar görebilir.Bu nedenle, güç alanı koruması hesaba katılırken hasarı belirlemek için kullanmanız önerilir.

Vizualizasyon

ForceField.Visible doğru ayarlanırsa, bir parçacık etkisi oluşturulur. Bir dizi kural, bu etkinin nereden yayılacağını belirler:

  • Ebeveynliğe bir , model içerirse model, adlı bir İnsansız ile R15'e ayarlanmışsa, etki AltTorso adlı parçadan yayılacaktır.Aksi takdirde, etki Gövde adlı parçadan yayılacaktır.
  • Ebeveynliğe bir BasePart eşdeğer olduğunda, etki parçanın BasePart.Position 'inden yayılacaktır.

Kod Örnekleri

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)

Özellikler

Visible

Paralel oku

ForceField parçacık efekti görülebilir olup olmadığını belirler.Bunu false olarak ayarlamak, varsayılan parçacık etkisini aşağıdaki kod örneğinde gösterildiği gibi özel bir etkiyle değiştirmenizi sağlar.

Kod Örnekleri

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)

Yöntemler

Etkinlikler