Roblox 火焰特效

Roblox 免费火焰特效:篝火、火把、燃烧角色、火焰陷阱、火焰龙卷风和喷火器 Flipbook,附带闪烁的 PointLight 和造成伤害的燃烧 Luau 脚本。

更新于

Roblox 内置 Fire 对象,其官方参考文档建议,想要制作更精细的效果时使用 ParticleEmitter。火焰最能体现两者的区别:内置火焰看起来都差不多,而 Flipbook 能在一个粒子中呈现有形状的火焰、余烬和烟雾。在旁边放一个 PointLight,火光也会照亮周围场景。

可用作起点的火焰特效

  • 地图火焰:篝火和滚滚烟雾火把会循环播放,适用于营地、地牢和大厅。
  • 危险区域:地面火焰危险效果适合用作燃烧的地面或熔岩坑边缘。在上方放置一个隐形 Part 来处理伤害。
  • 角色身上:角色燃烧特效会在玩家或 NPC 身上循环播放,直到燃烧状态结束(见下文)。
  • 攻击:火焰龙卷风适合用作火焰技能,黑焰炼狱适合用作终极技能,动漫火焰爆发适合动漫或卡通游戏。
  • 喷射效果:喷火器喷流的朝向是向右喷射。Flipbook 始终面向摄像机,因此适合侧视角游戏,例如 2.5D 或横版卷轴游戏。

用火焰照亮场景

ParticleEmitter 不会照亮周围环境。同一 Part 中的 PointLight 可以做到这一点:将 Color 设为橙色,Range 设为 12 到 16 studs,并且每帧稍微改变 Brightness,让光线随火焰闪烁。

Script(RunContext Client)
-- 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),这样光线看起来就像是从火焰中发出的。在客户端处理闪烁:它每帧都会变化,服务器没有理由把这些变化发送给每位玩家。

造成伤害的燃烧效果

燃烧是一种状态效果:它开始后,每半秒对角色造成少量伤害,最后结束。在服务器上运行该效果,因为角色生命值由服务器管理;并将特效焊接到角色身上,这样每位玩家都能看到角色燃烧。

服务器 Script
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),因此火焰在黑暗中仍然明亮,这正适合火焰效果。夜间看起来过亮的可能是烟雾;请参阅烟雾特效。
  • 大小:火把火焰为 2 到 3 studs,篝火为 6 到 8,燃烧角色约为 6,火焰龙卷风为 15 及以上。
  • 保持火焰竖直:火焰会向上升,因此将 Orientation 设为 FacingCameraWorldUp。使用默认的 FacingCamera 时,摄像机从上方向下看火焰,火焰会向后倾斜。
  • 大量火把:每个火把都只用一个粒子,但有五十支火把的地牢仍然要绘制五十个 Flipbook。墙上火把使用 512 px 纹理,并将 1024 留给玩家近距离观看的火焰。

Flipbook PNG 免费提供:每个特效页面上的 ROBLOX 按钮无需账号即可使用;免费账号也可以在工作室导出(每天 3 个特效),并自行选择网格和贴图尺寸。现成模型(已配置发射器并附带播放脚本的 .rbxmx 文件)以及供 UI 使用的 UIFlipbook.luau,包含在所有方案中,价格从每月 $7.99 起。

将特效导入游戏

所有设置和两种导入方式、免费 PNG 或现成模型,都可以在 Roblox 设置页面查看。按游戏类型浏览更多精选内容,请前往 免费 Roblox VFX。导出前还可以在工作室中修改任意特效:把火焰改成蓝色、绿色或诅咒般的紫色。

常见问题

应该使用 Roblox Fire 对象还是 ParticleEmitter?

内置 Fire 对象用起来很快,但设置不多,外观也只有一种。Roblox 官方参考文档建议,制作更精细的效果时使用 ParticleEmitter;在其中使用 Flipbook,就能呈现按设计播放的特定形状火焰、余烬和烟雾。

如何让火焰照亮周围区域?

粒子不会投射光线。在同一个 Part 中放置一个 PointLight,将 Color 设为橙色、Range 设为 12 到 16 studs,再通过客户端脚本每帧稍微改变 Brightness,让光线闪烁。

如何让玩家燃烧并受到伤害?

在服务器上,将循环播放的火焰特效焊接到 HumanoidRootPart,并在燃烧期间每半秒调用一次 Humanoid:TakeDamage;燃烧结束后移除特效。

我可以在能赚取 Robux 的游戏中使用这些特效吗?

可以。导出的特效,包括从素材库开始制作的特效,都可以用于任何项目,包括商业游戏,无需注明出处。但不能将素材库本身作为特效包转售。

更多 Roblox VFX 指南