ForceField

Hiển Thị Bản Đã Lỗi Thời

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Một Trường lực bảo vệ một Humanoid khỏi bị hư hại do phương pháp Humanoid:TakeDamage() gây ra và bảo vệ BaseParts khỏi bị gãy khớp do một Explosion .Một ForceField mới được tạo khi một nhân vật xuất hiện trên một và thuộc tính lớn hơn 0.

Thiệt hại và khớp

Một Trường lực ảnh hưởng đến ví trí mà nó được cha trực tiếp.Khi cha tới một Model , nó bảo vệ tất cả các BaseParts xuống từ mô hình đó.Nếu cha tới một BasePart , các khớp của phần chỉ sẽ được bảo vệ nếu cả phần và phần nó kết nối cũng chứa một Trường lực .

Trường lực chỉ bảo vệ Humanoids khỏi sát thương gây ra bởi phương pháp Humanoid:TakeDamage() .Người ngoài hành tinh vẫn có thể bị hư hại bằng cách thiết lập Humanoid.Health trực tiếp.Vì lý do này, được khuyến nghị rằng bạn nên sử dụng Humanoid:TakeDamage() để gán sát thương trong khi tính toán bảo vệ trường lực.

Hình họa

Khi ForceField.Visible được đặt thành true, một hiệu ứng hạt được tạo ra. Một số quy tắc xác định nơi hiệu ứng này sẽ được phát ra từ:

  • Khi cha mẹ cho một Model , nếu mô hình bao gồm một Humanoid có tên là Humanoid với Humanoid.RigType được đặt thành R15, hiệu ứng sẽ được phát ra từ phần có tên là UpperTorso .Nếu không, hiệu ứng sẽ được phát ra từ phần có tên là Torso .
  • Khi cha tới một BasePart hiệu ứng sẽ được phát ra từ phần BasePart.Position của nó.

Mẫu mã

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)

Thuộc Tính

Visible

Đọc Song Song

Xác định liệu hiệu ứng hạt ForceField có hiển thị hay không.Bằng cách đặt điều này thành false , bạn có thể thay thế hiệu ứng hạt mặc định bằng một hiệu ứng tùy chỉnh như được minh họa trong ví dụ mã sau.

Mẫu mã

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)

Phương Pháp

Sự Kiện