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

滚石轰隆:石头滚到你没脾气

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

【游戏功能】

拆一行代码:

lua
rock.vx = rock.vx + accel * dt * 1.4

巨石的速度每帧递增——滚石轰隆的压迫感全在这一行的累加里:它不是匀速滚来,是越滚越快的失控。今天讲滚石的表现,看一个"只会滚的石头"怎么做出全屏威胁。

一、启动、加速、撞击三段滚

滚石的滚法三段。启动段:人物推动巨石,巨石晃晃悠悠开始滚,速度慢得让人不以为意——前半程的松弛是后半程的铺垫。加速段:滚石的独门在于加速:每滚一屏速度涨四成,尘土和碎石从石底一路乱溅,地面的震感随速度增强——玩家眼睁睁看着它从散步变成失控。撞击段:巨石撞上狼怪的瞬间白光一闪、双层冲击环贴地滚出、狼怪被顶得倒滑半屏——巨石自己也要"刹"出一条尘土尾巴。三段的恐怖曲线是指数的:启动时人人淡定,撞击前人人逃跑——速度的累加就是恐惧的累加。

完整演示在这,默认自动循环:

demo
fx-boulder

二、幂尔框架实现:速度累加与旋转贴图

滚石的旋转角速度和位移速度联动,尘土按速度配量:

lua
local Boulder = {}
local KEY = { ACCEL = 1.4, R = 26 }

local rock = nil

function BL.Push(self_)
    if rock then return end
    rock = {
        x = SL:GetValue("actorX", self_) + 40,
        vx = 130,
        rot = 0
    }
    SL:PlayActorAct(self_, "cast")
    SL:ScreenShake(0.14, 2)
    SL:ShowSystemTips("巨石启动 — 越滚越快!")
end

function BL.Tick(dt)
    if not rock then return end
    local accel = SL:GetValue("rockAccel") or 100
    rock.vx = rock.vx + accel * dt * KEY.ACCEL / 100
    rock.x = rock.x + rock.vx * dt
    rock.rot = rock.rot + rock.vx * dt / KEY.R
    SL:SetActorRotate("boulder", rock.rot)
    SL:SetActorX("boulder", rock.x)
    -- 尘土按速度配量
    if math.random() < dt * (rock.vx / 4) then
        SL:PlayBurst(rock.x - KEY.R, SL:GetValue("groundY") - 4,
                     "dust", 1)
    end
    -- 命中判定
    local target = SL:GetValue("curTarget")
    local tx = SL:GetValue("actorX", target)
    if rock.x >= tx - 30 then
        SL:ScreenShake(0.38, 7)
        SL:PlayFxAt("rock_hit", tx, SL:GetValue("actorY", target))
        SL:DeductHp(target, 48)
        SL:ShowHitNum(target, 48, "boulder")
        SL:PlayActorAct(target, "stuck")
        SL:KnockBack(target, 60)
        SL:PlayFxAt("rock_stop", rock.x, SL:GetValue("groundY") - KEY.R)
        rock = nil
    end
end

return BL

rot 和 vx 的换算系数二十六就是巨石半径——滚一圈正好前进一个周长,滚动才不穿帮。

三、加速曲线与躲无可躲的解法

加速的系数要留给玩家活路:巨石从启动到撞击的时间定在两秒半,玩家的反应窗口就是这两秒半——躲不开的滚石是灾难片,躲得开的是惊险片。躲的判定按"跳"或"位移"实现:狼怪的 AI 会在撞击前零点四秒尝试侧移,十次里成三次——它偶尔躲掉,玩家才会觉得这场猫鼠是有来有回的。撞击后的巨石去哪也要交代:撞停后原地碎成三块滚到路边,或者带着余势滚出屏幕——消失的巨石是最敷衍的谢幕。最后,滚石的音效分三层:启动的闷推、滚动的隆隆、撞击的爆响,三层音量随速度递增——耳朵先于眼睛知道它有多快。

作者履历与出处

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