ForceField

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

A フォースフィールド は、Humanoid によるダメージを受けるのを防ぎ、Humanoid:TakeDamage() 方法によりジョイントが壊れるのを防ぎ、BaseParts により Explosion が壊れるのを防ぎます。キャラクターが フォースフィールド に生成されると、SpawnLocation プロパティがゼロより大きい場合、新しい SpawnLocation.Duration が作成されます。

ダメージとジョイント

A フォースフィールド は、親に属するインスタンスに影響を与えます。親に Model になると、そのモデルから下に降りるすべての BaseParts を保護します。親に BasePart が指定されている場合、パーツのジョイントは、パーツと接続されているパーツの両方が フォースフィールド を含んでいる場合にのみ保護されます。

フォースフィールド は、Humanoidsによるダメージからのみ、Humanoid:TakeDamage()します。ヒューマノイドは、Humanoid.Health を直接設定することでまだ損傷する可能性があります。このため、フォースフィールド保護を考慮しつつ、Humanoid:TakeDamage() を使用してダメージを割り当てることをお勧めします。

視覚化

When ForceField.Visible が真に設定されると、パーティクル効果が生成されます。複数のルールが、この効果が発信される場所を決定します:

  • 親に になったとき、モデルに と呼ばれる ヒューマノイド が含まれている場合、効果は に設定された R15 によって放出されます。そうでないと、効果は トルソ と呼ばれる部分から放出されます。
  • 親に BasePart されると、効果はパーツの BasePart.Position から放出されます。

コードサンプル

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)

プロパティ

Visible

並列読み取り

ForceField パーティクル効果が表示されるかどうかを決定します。これを false に設定すると、次のコードサンプルに示されたように、デフォルトのパーティクル効果をカスタム効果に置き換えることができます。

コードサンプル

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)

方法

イベント