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

打更巡夜:梆子声是城的钟

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

【游戏功能】

打更人的梆子声是古代城市的时钟:三更天梆子敲三下,全城都知道该睡了。今天拆打更巡夜的表现,看"巡夜"这条固定路线怎么做出一夜的距离感。

一、巡街、敲梆、报时三段循环

打更的循环三段。巡街段:更夫提着灯笼沿固定路线走,灯笼的光晕在夜里晃出一团暖色——巡街的路线固定但灯火摇曳,每一步的光都在动。敲梆段:走到更点位置停下,梆子敲出当更的次数——敲几下手里的梆子就报几更,梆声在夜里传得远。报时段:敲完梆子喊一嗓子报时辰——"天干物燥,小心火烛"这句词是打更人的招牌。三段的要点是"路线+节拍":路线给距离感,梆声给节奏感,距离和节拍叠在一起就是一夜的长度。

完整演示在这,点提灯巡夜:

demo
 fx-watchman

二、幂尔框架实现:路线节点与梆声节拍

巡街走固定路线节点,梆声按更点次数连击:

lua
local Watchman = {}
local ROUTE = { { 100, 200 }, { 330, 160 }, { 560, 200 }, { 330, 240 } }
local WATCH = { 3, 1, 4, 2, 5 }   -- 每个更点的敲击次数

local routeIdx, watchIdx = 1, 1

function WM.Tick(dt)
    -- 巡街: 走向当前路线节点
    local node = ROUTE[routeIdx]
    local dx = node[1] - SL:GetValue("actorX", "watchman")
    local dy = node[2] - SL:GetValue("actorY", "watchman")
    local d = math.sqrt(dx * dx + dy * dy)
    if d > 4 then
        SL:MoveActor("watchman", dx / d * 60 * dt, dy / d * 60 * dt)
        SL:PlayActorAct("watchman", "walk")
    else
        -- 到达更点: 敲梆
        routeIdx = routeIdx % #ROUTE + 1
        local knocks = WATCH[watchIdx] or 1
        watchIdx = watchIdx % #WATCH + 1
        for k = 1, knocks do
            SL:ScheduleOnce(function()
                SL:PlaySfx("bangzi")
                SL:PlayFxAt("bang_sound", SL:GetValue("actorX", "watchman"),
                                        SL:GetValue("actorY", "watchman"))
            end, k * 0.5)
        end
        SL:ShowSystemTips(knocks .. " 更天 — 天干物燥 小心火烛")
    end
end

return WM

梆声按更次连击的延时队列用 ScheduleOnce 排——敲几下半秒一个,节奏就是更次。

三、灯晕半径与梆声的距离

灯笼的光晕半径是巡夜的氛围核心:光晕小,夜黑;光晕大,夜亮——光晕的呼吸幅度随步伐微动。梆声的传播距离要"听得远":敲梆时画一圈声波扩散环从更夫位置荡开——声波环是"声音在传播"的可视化,一圈梆声传遍全城。最后,更夫的灯笼在夜里是唯一的光源:灯笼晃人也晃,光跟着晃——灯晕的晃动和人同步,人和灯融为一体,这就是打更人的剪影。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

威压诀:站得够近,它的刀就软

【游戏功能】 威压诀的全机制就一句:把气提到刀上,脚下荡开一圈威压场——圈里的怪刀软一半、出手慢半拍,你的刀对它加五成;怪不…

2026-10-01 03:33 996 技术组
进阶实战游戏功能

焚祭:烧了自己的犬,换十秒火刀

【游戏功能】 vd = hot and base 2 or base ——一行两倍的乘法,藏在焚祭全部的痛感里:刀翻倍的代价…

2026-10-01 03:33 996 技术组
进阶实战游戏功能

舍身盾:致命一刀下来,它替你扛了

【游戏功能】 大怪蓄力蓄到发亮的那一发重击,凭什么有信心接下来?多数玩家的答案是"闪",可闪有冷却、有前摇、有失误——舍身盾…

2026-10-01 03:33 996 技术组
进阶实战游戏功能

吸血虫:一只虫咬在身上,拍它要停手一拍

【游戏功能】 战斗组翻到一笔没人认领的异常:玩家的血条在没有挨打记录的情况下稳定下滑,一秒四点,战斗日志里攻击来源是空的。排…

2026-10-01 03:33 996 技术组
进阶实战游戏功能

沙漏阵:沙漏里的刀软,沙漏外的刀疯

【游戏功能】 数值组翻过一笔扯皮的账:同一只头目,A 队三分钟放倒,B 队磨了十一分钟还灭了——装备差不到一成,输出差了一倍…

2026-10-01 03:33 996 技术组
进阶实战游戏功能

借刀符:一张符贴上去,它的爪听我的

【游戏功能】 借刀符的全机制就一句:一张符掷中谁,谁就中招六秒——六秒里它的爪听你的,转身撕咬自己人,符效一过它回过神来第一…

2026-10-01 03:33 996 技术组