【游戏功能】
月圆的回血判定就这一行:
if moon >= 12 then hp = min(hpMax, hp + 30) end
月亮每十二秒圆一次,圆的一瞬狼怪回血三十——月圆时刻的全部机制就这一行。可这一行逼出来的是玩家的输出节奏:月圆之前压不满它的血,它就白捡三十点,越拖越难。今天拆开这本"倒计时输出"的账。
一、月牙、月圆、回血三段
月圆的三段。月牙:屏幕右上角挂着一轮月牙,随时间一点点充圆——月相就是倒计时,玩家抬眼就能读出"离月圆还有多久"。月圆:十二秒一到,月亮整个圆起来,青白色的月光泼下来——狼怪当场回血三十,绿格从血条里长出来,"月圆回血"的蓝字从它头顶飘起。压线:月圆前三秒,血条上方亮出"月圆将至"的提示——这三秒是玩家的冲刺期,把它的血压到最低,月圆的三十点才追不上你打掉的。三段连起来:月圆时刻把 DPS 从"越高越好"变成"要在窗口内够高"——输出不再只是伤害,还是和时间赛跑的速度。
完整演示在这——盯着右上的月相,赶在圆之前把它的血压干净:
fx-moon
二、幂尔框架实现:月相计时与回血结算
幂尔框架里月圆是一个环形计时器触发的周期回血:
local MoonRise = {}
local MOON_TIME, HEAL_PCT = 12, 0.3
local moon = 0
local function onTick(dt)
moon = moon + dt
SL:SetMoonPhase(moon / MOON_TIME)
if moon >= MOON_TIME then
moon = 0
SL:Heal("monster", SL:GetHPMax("monster") * HEAL_PCT)
SL:FlashScreen("#a5d6ff", 0.12)
SL:PlayBurst("monster", "moon_heal", 14)
SL:ShowTipAbove("monster", "+30 月圆回血")
end
end
SL:RegTick("moon_tick", onTick)
return MoonRise
月相走 SetMoonPhase 的可视化通道——倒计时画在右上角的月牙上而不是状态栏里,玩家抬眼就读,不用低头看表。
三、十二秒的配速与压线的三秒
十二秒的月相周期是这套玩法的配速表:一刀二十二点,十二秒里玩家要打出至少一百五十四点的伤害,才能在月圆前清空七十点的血线——这个配速就是设计的底账,打不到的玩家必须去升级装备,打得到的玩家开始琢磨压线。月圆前三秒的"将至"提示是配速的发令枪:这三秒玩家该做的不是砍,是把血线压到三十以内——月圆回血三十,血线三十以内才追不回。回血百分之三十的量也有讲究:回少了,月圆是点缀;回多了,永远追不平——三成刚好卡在"认真打能赢、摸鱼必输"的线上。和狂化变身的分账写清楚:狂化变身是玩家自己的八秒爆发窗,月圆是怪物的十二秒回血窗——两个窗口一个属于你一个属于它,会用狂化压月圆的玩家,等于把自己的爆发期对齐了它的虚弱期——窗口对窗口的战争,就是这类玩法的全部魅力。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…