CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

吹蜡烛:每口气都灭一片

2026-09-28 22:28 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

生日会上最安静的三秒钟:歌声停、烛光摇、全桌人屏息等你吹——吹蜡烛是所有仪式里参与感最强的三秒钟,因为每个人都在替你使劲。今天拆吹蜡烛的表现,看"熄灭"这个动作怎么做出仪式感。

一、点烛、吹气、化烟三段仪式

吹蜡烛的仪式三段。点烛段:蜡烛列队站在蛋糕上,火苗随呼吸微微摇曳——火苗的摇曳是"活"的证明,静止的火苗像贴图。吹气段:每吹一口气,一部分烛火应声熄灭——不是全灭,是按概率灭一部分,吹的次数和蜡烛数构成节奏:五根蜡烛吹三口气,每口气都有收获。化烟段:熄灭的烛火化作一缕青烟袅袅上升,烟的轨迹弯两弯再散——直上直下的烟像化学实验,弯两弯的烟才是烛火的一生。全灭的瞬间是仪式的高潮:整屏微暗半秒再亮起,配一行"愿望会实现的"——暗下去的那半秒就是许愿的时间。

完整演示在这,点吹气试试:

demo
fx-blowcandle

二、幂尔框架实现:熄灭队列与余烟粒子

熄灭走概率队列,余烟用慢速上升粒子:

lua
local BlowCandle = {}
local KEY = { SMOKE_T = 0.9 }

local candles = {}

function BC.Build(count)
    candles = {}
    for i = 1, count do
        candles[#candles + 1] = {
            x = 210 + (i - 1) * 48,
            lit = true,
            fade = 1,
            sway = math.random() * 6.28
        }
    end
end

function BC.Blow()
    local any = false
    for _, c in ipairs(candles) do
        if c.lit and math.random() < 0.7 then
            c.lit = false
            c.fade = 0.001
            any = true
            SL:PlayBurst(c.x, SL:GetValue("tableY") - 52, "smoke_wisp", 4)
        end
    end
    local lit = 0
    for _, c in ipairs(candles) do
        if c.lit then lit = lit + 1 end
    end
    SL:ShowSystemTips("还亮 " .. lit .. " 根")
    if lit == 0 and any then
        SL:FlashScreen("#000000", 0.5)          -- 全屏暗半秒许愿
        SL:ScheduleOnce(function()
            SL:ShowSystemTips("愿望会实现的")
        end, 0.6)
    end
end

function BC.Tick(dt)
    for _, c in ipairs(candles) do
        if c.lit then
            c.sway = c.sway + dt * 6
            -- 火苗摇曳: 幅度跟正弦走
            SL:SetFlameSway(c.x, math.sin(c.sway) * 3)
        elseif c.fade < 1 then
            c.fade = math.min(1, c.fade + dt)
        end
    end
end

return BC

全屏暗半秒是许愿的留白:暗下去的瞬间所有人都低头闭眼——留白本身就是演出。

三、概率吹气与火苗的分层

吹气熄灭的概率定七成:三口气基本能灭完,偶尔剩一两根要补一口气——"补一口"让节奏多出一拍,比一口全灭更有参与感。火苗的画法分两层:外层光晕用径向渐变,内层焰芯用椭圆拉伸——焰芯随摇曳同步倾斜,火苗像被风吹着。余烟的上升轨迹要弯两弯:二次曲线的弯比直线多一分"气若游丝"。最后,蜡烛熄灭后的淡紫残躯别换成灰色——紫色的蜡烛芯和灰色的烟是两个世界的颜色,紫色保住了蛋糕的甜。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

围三阙一:围三面赶一口,出口就是网口

【游戏功能】 围住一只怪的贪心人人都有:三面堵死一只不漏——可围三阙一的规矩偏偏唱反调:围三面留一口,怪只会往那口里钻——口…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

引水:先泼水,再借一道雷

【游戏功能】 元素搭配的老话是水火不容,可战场上的说法得倒过来念:水是雷的引信。引水的机制是一场两步的合谋:先泼一瓢水把地泼…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

血珠:踩碎血珠,断它口粮

【游戏功能】 低血大怪的回血机制人人见过,可血珠的回血藏着一手"要你去抢"的心机:它每掉两成血就吐一颗血珠在地上,两秒内不踩…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

现身:它钻进影子,从你背后出来

【游戏功能】 隐形怪人人都遇到过,可现身的机制比隐形狠:它钻进影子里消失,一秒后从你脚下画的影圈里钻出来,背刺三十四点——影…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

召唤阵:踩阵搅了它的援兵

【游戏功能】 有人纳闷:大怪危机预警里最气人的一档是什么?不是它放大招,是它开阵——法阵一转,转满三秒蹦出两只小狼,好好的单…

2026-09-30 21:31 996 技术组
进阶实战游戏功能

蓄力炮:红线锁死就横挪

【游戏功能】 if chg <= 0.8 then lock = true ——一行把"锁定"写进蓄力里的判定,道破了蓄力炮…

2026-09-30 21:31 996 技术组