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

Bu örnek, varsayılan ForceField parçacık etkisini geliştiricinin değiştirebileceği ParçacıEmisyonlar kullanarak bir etkiyle değiştirecek bir işlev içerir.

Özel Güç Alanı Etkisi

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
-- torso'yu bul
local torsoName = humanoid.RigType == Enum.HumanoidRigType.R15 and "UpperTorso" or "Torso"
local torso = character:FindFirstChild(torsoName)
if torso then
-- bir kuvvet alanı oluştur create a forcefield
local forceField = Instance.new("ForceField")
forceField.Visible = false -- görünmez
-- bir parçacık efekti oluştur
local particleEmitter = Instance.new("ParticleEmitter")
particleEmitter.Enabled = true
particleEmitter.Parent = torso
-- kaldırılan güç alanını dinle
forceField.AncestryChanged:Connect(function(_child, parent)
if not parent then
if particleEmitter and particleEmitter.Parent then
particleEmitter:Destroy()
end
end
end)
-- kuvvet alanını ebeveyn yap ve sona erdirmeye ayarla
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