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

二段跳:一跃再跃踏空而过

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

【游戏功能】

拆一行代码:

lua
if P.jumps == 1 then P.vy = -380; P.jumps = 2 end

空中再点一次跳跃键,二段跳成立——起跳一次是物理,再跳一次是魔法。今天讲二段跳,讲的是"两次输入合成一个动作"的输入设计,以及低扫这种贴地攻击怎么逼玩家学会它。

一、低扫、起跳、二段的三重博弈

二段跳的乐趣要靠一个够低的攻击来逼出来。狼怪横扫的冰浪贴地而行,高度不过膝盖——一次普通跳跃的最高点恰好不够,球冰浪从脚下扫过照样挨打。这时玩家才会去按第二次跳跃:二段跳在空中再蹬一脚,多出一截腾空高度,冰浪从脚底掠过,狼怪扑了个空。三段表现各有讲究:起跳的尘土、二段跳的蓝色气环、踏空成功后"踏空而过"的判定字——每一段都要给玩家一个"我按对了"的回执。跳跃时机是全套玩法的核心:跳早了落回地面正好挨扫,跳晚了冰浪已经糊脸,唯一的正确答案藏在狼怪抬手的那零点几秒里。

完整演示在这,点一次跳、空中再点一次:

demo
fx-doublejump

二、幂尔框架实现:跳跃计数与分段力度

跳跃次数决定这次输入是起跳还是二段:

lua
local DoubleJump = {}
local KEY = { JUMP1 = 420, JUMP2 = 380, GRAVITY = 900 }

local st = { vy = 0, jumps = 0, grounded = true }

function DJ.Press()
    if st.grounded then
        -- 第一跳
        st.vy = -KEY.JUMP1
        st.jumps = 1
        st.grounded = false
        SL:PlayBurst(SL:GetValue("actorX"), SL:GetValue("actorY"), "dust", 6)
        SL:PlayActorAct("player", "run")
    elseif st.jumps == 1 then
        -- 二段跳: 空中再蹬一脚, 并重置下坠速度
        st.vy = -KEY.JUMP2
        st.jumps = 2
        SL:PlayFxAt("air_ring", SL:GetValue("actorX"), SL:GetValue("actorY"))
        SL:PlaySfx("double_jump")
    end
    -- 第二次二段跳的输入被忽略: jumps 已是 2
end

function DJ.Tick(dt)
    if st.grounded then return end
    st.vy = st.vy + KEY.GRAVITY * dt
    local y = SL:GetValue("actorY") + st.vy * dt
    if y >= SL:GetValue("groundY") then
        y = SL:GetValue("groundY")
        st.grounded = true
        st.vy = 0
        st.jumps = 0
        SL:PlayActorAct("player", "idle")
    end
    SL:SetActorY("player", y)
end

return DJ

jumps 这个计数器就是二段跳的全部状态——落地清零,空中限用一次,第三次点击自然被吞掉。

三、攻击高度与跳跃预算的匹配

低扫的高度是设计师手里的隐藏标尺:它必须高于一跳的顶点、低于二跳的顶点,二段跳的存在才有意义。测法很简单——把一跳顶点记下来,冰浪的高度设在一跳顶点的八成,二跳顶点在一跳的一点三倍,误差带正好卡在中间。狼怪的挥砍前摇是玩家读招的窗口:前摇零点五秒,起跳窗口留给最后零点二秒——太宽松没有紧张感,太严格变成背板。二段跳的使用次数每跳限一次,第三次输入直接吞掉不反馈——不反馈比"叮"一声更好,玩家自然明白次数用完了。落地时如果恰好压在冰浪上,判定按脚底高度算,别按身体中心算——用脚底判定是对所有跳跃类玩法的通用尊重。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

吸力:它一吸气,人全往嘴边飞

【游戏功能】 零点一秒之内,血条无端少了一截——没有刀光没有红字,人却已经站在它嘴边了。吸力的机制就是这场无声的绑架:它吸气…

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

眼线:一道红光扫过来,脚步跟着光的背后走

【游戏功能】 有块场地被玩家们称作"阅兵场":一尊石像立在正中,眼睛扫出的一道红光从场子这头滚到那头,碰着就烧——新手进场先…

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

雷印:被点名的跑远点,别炸了队友

【游戏功能】 seal.x = P.x ——一行把雷的落点锁在你此刻坐标的代码,写尽了雷印全部的凶险:被点名的三秒后,雷落在…

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

地波:贴地扫来的那一环,跳起来就躲

【游戏功能】 单子上写着一场三连摔:狼怪每跺一次地,玩家就摔一个跟头,三连摔摔出了真火气——直到有人教他一个字:跳。地波的机…

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

护主:小怪死光之前,它的皮是刀枪不入的

【游戏功能】 火力全开轰在主母身上,伤害数字却全是"免伤"的白字——多少人跟这道白打的罩子耗到弹尽粮绝,才有人喊一句:先杀小…

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

狂暴线:它血过三成就红了眼,先手为强

【游戏功能】 伤害统计里有条诡异的曲线:同一场仗,前半段每刀挨十五,后半段每刀挨三十——配置没人动过,狼怪却像换了个人。狂暴…

2026-09-30 20:26 996 技术组