火 は複数のプリメイドパーティクル放射クラスの 1つです。他の粒子放射オブジェクトと同様、ファイアは親になったときに粒子を放射し、BasePart 、Attachment 、Enabled の間、放射します。このオブジェクトは、ピンチで迅速な視覚効果を作成するのに便利です;詳細な作業のためには、代わりに ParticleEmitter を使用することを好ましいです。
炎の粒子は、BasePart の中心から、親に属するものとして放出されます。パーティクルは上向き (+Y) 方向に放出されますが、Fire.Heat 負の方向に放出することもできます。親として Attachment を使用することで、放射位置/方向を変更することにより、Attachment.CFrame または関連するプロパティを変更することで放射が修正できます。
When Enabled がオフになっていると、既存のパーティクルは期限切れまでレンダリングを続けます。しかし、炎の Parent が nil に設定されている場合、すべての既存の粒子がすぐに消滅し、ParticleEmitter:Clear() の動作と同様になります。同じ効果を達成するために、Parent を nil に設定し、正確なオリジナルオブジェクトに戻すこともできます。即時消失は望まれない場合は、Fire の親を遠くの位置に移動し、Destroy 数秒後に Fire を Debris:AddItem() で動かしてください。これにより、既存のパーティクルの期限切れ時間が延長されます。
ファイアオブジェクトは独所有に光を発しません。燃焼オブジェクトの周りにコーヒーな環境を作成するのを助けるために、オレンジの PointLight と Color を追加してみてください。これは、炎がより現実的に見えるようにすることができます。
ファイアオブジェクトは 2つのエミッタから構成されます。両方とも、Fire の Size , Heat , Color および SecondaryColor によって様々な方法で影響を受けます。小さい、セカンダリエミッタから放出される粒子は、プライマリエミッタから放出される粒子よりもはるかに長い寿命を持ち、さらに高く上昇します。右側のビデオでは、異なる色の 2つのエミッターを見ることができます。
実際の炎とは異なり、Fire オブジェクト は独自に拡散しません 。ゲームでこの動作を見つけた場合、それは Script によって起こっています。
コードサンプル
This code sample adds Fire to all BasePart in the Workspace named "Torch".
for _, child in pairs(workspace:GetChildren()) do
if child.Name == "Torch" and child:IsA("BasePart") then
local fire = Instance.new("Fire")
fire.Heat = 10
fire.Color = child.Color
fire.SecondaryColor = Color3.new(1, 1, 1) -- White
fire.Size = math.max(child.Size.X, child.Size.Z) -- Pick the larger of the two dimensions
fire.Parent = child
end
end
概要
プロパティ
メイン(外部)炎粒子の色を決定します。
炎の粒子が放出されるかどうかを決定します。
粒子が放出される速度を決定します。
セカンダリ (内部) 炎粒子の色を決定します。
炎の粒子のサイズを決定します。
パーティクル効果の速度を制御する 0-1 の値。
プロパティ
Color
色プロパティは、Fire オブジェクトによって放出される大きな粒子の色を決定します。本質的には、炎の外部の色です。
一全般に、より冷たい炎は火の外にあります。そのため、外部の部分が赤かオレンジ-イエローである場合、火はより現実的に見えます。一貫して明るい炎は、非常に現実的に見えませんので、このプロパティを黄色に設定しないでください。試してみてください PointLight を兄弟として PointLight.Color に追加し、Fire に を追加してみてください。これにより、周囲の環境に光が供給され、炎の粒子とより密接に感じられます。
コードサンプル
This code sample adds Fire to all BasePart in the Workspace named "Torch".
for _, child in pairs(workspace:GetChildren()) do
if child.Name == "Torch" and child:IsA("BasePart") then
local fire = Instance.new("Fire")
fire.Heat = 10
fire.Color = child.Color
fire.SecondaryColor = Color3.new(1, 1, 1) -- White
fire.Size = math.max(child.Size.X, child.Size.Z) -- Pick the larger of the two dimensions
fire.Parent = child
end
end
Enabled
有効属性は、ParticleEmitter.Enabled と同様に、炎粒子が放出されるかどうかを決定します。既に放出されているすべての粒子は、期限が切れるまでレンダリングを続けます。このプロパティは、後で必要になるまでプリメイドのファイアエフェクトを保持するのに便利です。炎粒子は、Fire オブジェクトの Instance.Parent が nil に設定されると破壊されるため、このプロパティは、炎オブジェクト全体を破壊する前に、既存の粒子が期限切れになる機会を与えることができます。以下の機能を参照してください。
local Debris = game:GetService("Debris")
local part = script.Parent
function douseFlames(fire)
fire.Enabled = false -- No more new particles
Debris:AddItem(fire, 2) -- Remove the object after a delay (after existing particles have expired)
end
douseFlames(part.Fire)
コードサンプル
This code sample allows a player to click the parent BasePart to toggle a fire effect.
local part = script.Parent
local clickDetector = Instance.new("ClickDetector")
clickDetector.Parent = part
local fire = Instance.new("Fire")
fire.Parent = part
local light = Instance.new("PointLight")
light.Parent = part
local function onClick()
fire.Enabled = not fire.Enabled
light.Enabled = fire.Enabled
end
clickDetector.MouseClick:Connect(onClick)
Heat
ヒートプロパティは、パーティクルが Fire オブジェクトからどれほど速く放出されるかを決定します。範囲は [-25, 25] に制限されます。正の値は、親 BasePart または Attachment の上向き (+Y) 方向にあります。内部粒子の ParticleEmitter.Acceleration にも影響します。以下では、より高い熱が炎粒子の速度/加速度に及ぼす影響を見ることができます(左はヒート = 9、右はヒート = 18)。
コードサンプル
This code sample adds Fire to all BasePart in the Workspace named "Torch".
for _, child in pairs(workspace:GetChildren()) do
if child.Name == "Torch" and child:IsA("BasePart") then
local fire = Instance.new("Fire")
fire.Heat = 10
fire.Color = child.Color
fire.SecondaryColor = Color3.new(1, 1, 1) -- White
fire.Size = math.max(child.Size.X, child.Size.Z) -- Pick the larger of the two dimensions
fire.Parent = child
end
end
LocalTransparencyModifier
SecondaryColor
SecondaryColor プロパティは、Fire オブジェクトによって放出される小さな粒子の色を決定します。本質的には、炎の内部部分の色です。以下では、炎のセカンダリ色が白に設定されているため、大きくて外側の粒子と区別され、Fire.Color が青に設定されているように見えます。内部粒子は 1 の ParticleEmitter.LightEmission を使用しているため、より暗い色が粒子を透明にすることにより、内部粒子が全くレンダリングされなくなります(その結果、黒は内部粒子のレンダリングを完全に停止します)。
コードサンプル
This code sample adds Fire to all BasePart in the Workspace named "Torch".
for _, child in pairs(workspace:GetChildren()) do
if child.Name == "Torch" and child:IsA("BasePart") then
local fire = Instance.new("Fire")
fire.Heat = 10
fire.Color = child.Color
fire.SecondaryColor = Color3.new(1, 1, 1) -- White
fire.Size = math.max(child.Size.X, child.Size.Z) -- Pick the larger of the two dimensions
fire.Parent = child
end
end
Size
このプロパティは、炎の粒子のサイズを決定します。範囲は 2 から 30 でなければなりません。ParticleEmitter.Size とは異なり、炎の実際のサイズは、スタッドの同等サイズと 1:1 一致しません; それは少し小さいです。
環境をよりコーヒーにするために、PointLight を Fire オブジェクトの兄弟として追加してみてください。このプロパティに対応して PointLight.Brightness と PointLight.Range を設定して、より大きな炎がより多くの光を生成するようにします。
コードサンプル
This code sample adds Fire to all BasePart in the Workspace named "Torch".
for _, child in pairs(workspace:GetChildren()) do
if child.Name == "Torch" and child:IsA("BasePart") then
local fire = Instance.new("Fire")
fire.Heat = 10
fire.Color = child.Color
fire.SecondaryColor = Color3.new(1, 1, 1) -- White
fire.Size = math.max(child.Size.X, child.Size.Z) -- Pick the larger of the two dimensions
fire.Parent = child
end
end