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

孔明灯:心愿越飞越远

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

【游戏功能】

拆一行代码:

lua
L.x = L.x + math.sin(L.sway) * 8 * dt

一盏孔明灯的一生就是这一行:缓缓升空、左右轻摆、越飞越远。没有爆发、没有特效堆叠,孔明灯的演出全靠"慢"——它是游戏里少见的用克制做主视觉的案例。今天拆孔明灯的表现,看最安静的演出怎么做出最绵长的余味。

一、点灯、升空、融入三段远行

孔明灯的三段远行。点灯段:灯从画面下缘出现,灯体的暖光在暗色里晕开一圈光晕——光晕是孔明灯的存在感来源,没有光晕它就只是一个黄色的多边形。升空段:以可调的速度缓缓上升,横向上随正弦轻摆——摆动幅度只有八个像素,摆太快就成了风筝,慢摆才是热气流的诚实。融入段:灯飞过屏幕上缘前亮度渐暗、体积渐小,最后融进静态星空——融入是告别,直接消失的孔明灯等于被系统收回,玩家许的愿也被一并收回了。多灯同放是隐藏玩法:放满一屏,每盏灯各自摆动,整屏变成流动的星河。

完整演示在这,点放飞一盏:

demo
fx-skyliner

二、幂尔框架实现:光晕分层与摆动漂移

灯体三层渲染:光晕、灯罩、灯芯,摆动做横移漂移:

lua
local SkyLantern = {}
local lamps = {}

function SL2.Release()
    lamps[#lamps + 1] = {
        x = 100 + math.random() * (SL:GetValue("width") - 200),
        y = SL:GetValue("height") - 40,
        vy = -(SL:GetValue("riseSpeed") or 30),
        sway = math.random() * 6.28,
        a = 1
    }
end

function SL2.Tick(dt)
    for i = #lamps, 1, -1 do
        local L = lamps[i]
        L.y = L.y + L.vy * dt
        L.sway = L.sway + dt
        L.x = L.x + math.sin(L.sway) * 8 * dt       -- 慢摆漂移
        -- 飞出屏顶: 淡出后移除
        if L.y < -40 then
            table.remove(lamps, i)
        else
            -- 三层渲染: 光晕/灯罩/灯芯
            SL:DrawGlow(L.x, L.y, 34, "warm", 0.5)
            SL:DrawLanternBody(L.x, L.y)
            SL:DrawCore(L.x, L.y, 4)
        end
    end
end

-- 连放十盏的星河成就
function SL2.StarRiverCheck()
    if #lamps >= 10 and not SL:GetValue("riverDone") then
        SL:SetValue("riverDone", true)
        SL:PlayFxAt("sky_river")
        SL:ShowSystemTips("满屏星河, 心愿都带上了")
    end
end

return SkyLantern

StarRiverCheck 是连放的隐藏奖励:十盏同屏触发一次"星河"提示——收集的乐趣连孔明灯也不放过。

三、光晕半径与远行的渐隐

光晕半径是孔明灯存在感的标尺:三十四像素的光晕在六百六十宽的画布里刚好"温暖而不刺眼",半径翻倍就是第二个太阳。灯体的暖色要分层:灯罩橙红、灯芯乳白,两层之间留一线深色——分层让灯有了"结构",单色的灯是纸片。远行的渐隐用透明度缓降而不是体积缩小:缩小像飞远(合理),变淡像熄灭(感伤),两种消失选一种贯彻到底,混用最伤气氛。最后是密度的心机:放得越多每盏的亮度自动微降,满屏时每盏灯只有单放时六成的亮度——单灯亮、群灯柔,一屏灯海才不会烧穿玩家的屏幕。

作者履历与出处

本文由 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 技术组