Roblox向け火のVFX
Roblox向けの無料の火のエフェクト。たき火、たいまつ、燃えるキャラクター、火の罠、火の竜巻、火炎放射器をフリップブックで表現できます。明滅するPointLightと、ダメージを与える燃焼用Luauコードも紹介します。
Robloxには標準のFireオブジェクトがありますが、より細かい表現にはParticleEmitterを使うことを公式リファレンスでも推奨しています。火は違いが特にわかりやすいエフェクトです。標準の炎はどれも似た見た目ですが、フリップブックなら形のある炎、火の粉、煙を1つのパーティクルで表現できます。隣にPointLightを置けば、周囲も照らせます。
まず使いたい火のエフェクト
- マップの火: CampfireとRolling Smoke、Smoking Torchはループ再生するため、キャンプ、ダンジョン、ロビーに使えます。
- 危険地帯: Ground Fire Hazardは、燃える床や溶岩の穴の縁に使えます。その上に透明なPartを置いて、ダメージ処理を設定します。
- キャラクターに使う: Burningは、プレイヤーやNPCが燃えている間、ループ再生します(下記参照)。
- 攻撃: Fire Tornadoは火のアビリティに、Black Flame Infernoは必殺技に、Anime Fire Burstはアニメ風やカートゥーン風のゲームに使えます。
- 炎の噴射: Flamethrower Streamは右向きに噴射するよう描かれています。フリップブックは常にカメラの方を向くため、2.5Dや横スクロールなどの横視点ゲームに適しています。
火でシーンを照らす
ParticleEmitterは周囲を照らしません。同じPartにPointLightを置くと、周囲を照らせます。Colorをオレンジに、Rangeを12 to 16 studsに設定し、毎フレームBrightnessを少し変えると、炎に合わせて光が明滅します。
-- A Script inside the fire's part. In Properties, set its RunContext to Client.
local RunService = game:GetService("RunService")
local light = Instance.new("PointLight")
light.Color = Color3.fromRGB(255, 150, 70)
light.Range = 14
light.Shadows = true
light.Parent = script.Parent
RunService.RenderStepped:Connect(function()
local t = os.clock()
-- Two quick waves and some noise read as a living flame.
local flicker = math.sin(t * 7) * 0.25 + math.sin(t * 13.3) * 0.15
light.Brightness = 2 + flicker + math.noise(t * 4) * 0.4
end)Partは透明(Transparency 1)のままにして、炎そのものから光が出ているように見せます。明滅の処理はクライアントで行います。毎フレーム変化するため、サーバーから全プレイヤーに送信する必要はありません。
ダメージを与える燃焼処理
燃焼は状態異常です。燃焼を開始し、キャラクターに0.5秒ごとに少しずつダメージを与え、最後に終了します。体力を管理するサーバーで処理し、エフェクトをキャラクターに溶接して、すべてのプレイヤーに燃えている姿が見えるようにします。
local Debris = game:GetService("Debris")
local template = game.ReplicatedStorage.Effects:WaitForChild("Burning")
local function ignite(character: Model, seconds: number, damagePerTick: number)
local humanoid = character:FindFirstChildOfClass("Humanoid")
local root = character:FindFirstChild("HumanoidRootPart")
if not humanoid or not root or character:FindFirstChild("Burning") then return end
local fx = template:Clone()
fx.Anchored = false
fx.CFrame = root.CFrame
local weld = Instance.new("WeldConstraint")
weld.Part0 = root
weld.Part1 = fx
weld.Parent = fx
fx.Parent = character
Debris:AddItem(fx, seconds)
for _ = 1, math.floor(seconds / 0.5) do
task.wait(0.5)
if humanoid.Health <= 0 or not fx.Parent then break end
humanoid:TakeDamage(damagePerTick)
end
end
-- From your hit code: burn for 3 seconds, 5 damage every half second.
-- task.spawn(ignite, character, 3, 5)task.spawnで呼び出すと、ループが呼び出し元のコードを止めません。Burningという名前のPartがすでにあるか確認することで、燃焼が重複して発生するのを防げます。また、キャラクターにForceFieldがある間はTakeDamageが何もしないため、スポーン時の保護も機能します。
火の設定
- 発光: ライブラリの火の多くには煙や暗い火の粉が含まれるため、Glowをオフ(LightEmission 0)にして書き出します。煙が見える状態を保てます。煙のレイヤーをスタジオで非表示にしてから書き出せば、より明るく、発光だけの炎にできます。残ったすべてのレイヤーが光を加える場合、書き出し時にGlowが自動でオンになります。
- 夜のマップ: エミッターは照明の影響を受けない(LightInfluence 0)ため、暗闇でも炎が明るく見えます。火には適した設定です。夜に明るく見えすぎることがあるのは煙です。煙のVFXをご覧ください。
- サイズ: たいまつの炎は2 to 3 studs、たき火は6 to 8、燃えるキャラクターは約6、火の竜巻は15以上が目安です。
- 垂直に立つ炎: 火は上昇するため、OrientationをFacingCameraWorldUpに設定します。初期設定のFacingCameraでは、カメラが炎を見下ろすと、炎が後ろに傾いて見えます。
- たいまつをたくさん置く場合: たいまつ1つにつきパーティクルは1つですが、たいまつが50本あるダンジョンでは、フリップブックも50個描画されます。壁のたいまつには512 pxのテクスチャを使い、プレイヤーのすぐそばに置く火には1024を使いましょう。
フリップブックPNGは無料です。各エフェクトページのROBLOXボタンはアカウント不要で使えます。また、無料アカウントでもスタジオから、グリッドとテクスチャサイズを選んで書き出せます(1日3エフェクト)。エミッターを設定済みで再生用Scriptが付いた.rbxmxの準備済みモデルと、UI用のUIFlipbook.luauは、月額$7.99からのすべてのプランに含まれます。
ゲームに取り込む
すべての設定と2通りの導入方法、無料のPNGまたはすぐに使えるモデルは、Robloxセットアップページで確認できます。ジャンル別のおすすめは無料のRoblox VFXをご覧ください。書き出す前にスタジオでエフェクトを変更することもできます。炎を青や緑、呪われたような紫にしてみましょう。
よくある質問
RobloxのFireオブジェクトとParticleEmitter、どちらを使うべきですか?
標準のFireオブジェクトは手軽に使えますが、設定や見た目の種類は限られています。より細かい表現にはParticleEmitterを使うことをRobloxの公式リファレンスでも推奨しています。ParticleEmitterにフリップブックを使えば、形のある炎、火の粉、煙を、意図したとおりに再生できます。
火で周囲を照らすにはどうすればよいですか?
パーティクルは光を放ちません。同じPartにPointLightを置き、Colorをオレンジに、Rangeを12 to 16 studsに設定します。クライアントスクリプトで毎フレームBrightnessを少し変えると、光が明滅します。
プレイヤーを燃やしてダメージを与えるにはどうすればよいですか?
サーバー上でループする火のエフェクトをHumanoidRootPartに溶接します。燃焼中は0.5秒ごとにHumanoid:TakeDamageを呼び出し、燃焼が終わったらエフェクトを削除します。
Robuxを獲得できるゲームで、これらのエフェクトを使えますか?
はい。ライブラリから開始したものを含め、書き出したエフェクトはクレジット表記なしで、商用ゲームを含むあらゆるプロジェクトに使用できます。ただし、ライブラリ自体をエフェクトパックとして再販売することは禁止されています。







