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

河灯寄愿:顺水漂走的思念

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

【游戏功能】

河灯的剧本比孔明灯多了一层:它不往上走,它顺水漂。漂的路径是活的——水流的蜿蜒、灯身的摆动、灯火在水面上的倒影,三件事叠加出"顺流而下"的全部诗意。今天拆河灯寄愿的表现,看"漂"这个动作怎么做进横版画面。

一、放灯、漂流、远去三段旅程

河灯的旅程三段。放灯段:灯从画面左侧的岸边放入水中,入水的瞬间灯火晕开一圈光——放灯的位置固定在岸,变化的只有水流的速度滑块。漂流段:河灯顺流向右,纵向随水波的节奏上下浮沉,灯火在水面拖出一条晃动的倒影——倒影是河灯独有的特权,天上的孔明灯没有这个待遇。远去段:灯漂出画面右侧之前亮度渐暗,像被夜色慢慢收走。多灯同放的景观是隐藏的高潮:一盏灯是一条光点,十盏灯连起来就是一条星河——河灯从不辜负"放满一条河"的执念。

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

demo
fx-riverlamp

二、幂尔框架实现:水流波动与倒影分层

漂移的纵向浮动跟水波函数走,倒影用叠加光晕:

lua
local RiverLamp = {}
local lamps = {}

function RL.Release()
    lamps[#lamps + 1] = {
        x = 40,
        y = 120 + math.random() * 90,
        ph = math.random() * 6.28
    }
    SL:SetValue("released", SL:GetValue("released") + 1)
end

function RL.Tick(dt)
    local flow = SL:GetValue("flowSpeed") or 50
    for i = #lamps, 1, -1 do
        local L = lamps[i]
        L.x = L.x + flow * dt
        L.ph = L.ph + dt
        -- 纵向浮沉跟水波: 同一片水同一个节奏
        L.y = L.y + math.sin(L.ph * 1.6) * 8 * dt
        SL:SetFxPos("lamp" .. i, L.x, L.y)
        -- 水面倒影: 光晕垂直镜像
        SL:DrawGlow(L.x, L.y + 14, 24, "warm_mirror", 0.3)
        -- 漂出画面: 淡出移除
        if L.x > SL:GetValue("width") + 30 then
            table.remove(lamps, i)
        end
    end
end

-- 水波底纹: 三层正弦错相滚动
function RL.Water(dt)
    SL:SetValue("waterPhase", (SL:GetValue("waterPhase") or 0) + dt)
    for w = 1, 6 do
        SL:DrawWaveLine(w, SL:GetValue("waterPhase") * 2 + w)
    end
end

return RiverLamp

浮沉跟水波函数而不是随机数——同一片水的节奏一致,灯与灯之间的起伏才像在同一道河里。

三、水波层次与灯火的水面特权

水波画三层:远层慢而淡、近层快而亮,三层错相滚动,河的纵深就出来了。灯火的倒影要在光晕下面再压一层垂直镜像的暖光——倒影比本体淡三成、抖动频率跟水波同频,灯火贴着水面的真实感全靠这层倒影。河灯的密度也有讲究:放满一河时每盏灯的亮度自动压暗两成,河灯成河而不成火灾——密度与亮度的反比是所有"灯光群像"的通用法则。最后,河岸的深色条压在上下两端——岸把水夹在中间,灯的漂移有了边界,画面有了构图,玩家的眼睛有了归处。

作者履历与出处

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