【游戏功能】
内劲的记账就这一行:
stack = (stack + 1) % 3
三点一循环,攒满归零——内劲是所有"按次数触发"的资源的通用骨架。可这一行的前后全是节奏的学问:第三刀的影子什么时候出、半额伤害怎么结算、断档之后从几开始数。内劲这套"三刀一循环"的玩法,拆的就是这一行的节奏学。
一、攒劲、满点、出鞘三段
内劲的三段。攒劲:每一刀攒一点,人物身下三颗小点依次点亮——第一颗蓝、第二颗蓝、第三颗亮起的瞬间三颗同闪,"满了"的信号不用字,点的亮度自己会喊。满点:第三刀落下的同时,玩家的影子里"唰"地再出一刀——一道蓝色的残影弧扫过狼怪,半额的六点伤害跟着飘字"内劲"一起跳出——正刀十二点、影子六点,一刀双响的账摆在明面上。出鞘:影子出鞘后内劲清零,三颗点重新变空——从头再攒。三段循环起来:匀速砍刀,每三刀吃一次双响;节奏忽快忽慢,内劲就断档——它奖励的不是手速,是匀速。
攒劲的进度长在玩家自己身上,砍一刀余光扫一眼——界面的位置跟着操作的视线走。影子刀的画法也讲究:残影从玩家身后半步的位置斜掠出去,颜色走蓝不走红——正刀红、影子蓝,两条刀光交替,玩家扫一眼刀光的颜色就知道这刀带没带劲。
完整演示在这——匀着点「劈砍!」,看三颗点怎么亮、影子怎么补刀:
fx-echo
二、幂尔框架实现:计数循环与影子结算
幂尔框架里内劲是一个取模循环加延迟结算的影子刀:
local InnerForce = {}
local FULL, ECHO_DELAY, ECHO_PCT = 3, 0.25, 0.5
local stack = 0
local function onPlayerHit(raw)
stack = (stack + 1) % FULL -- 就是这一行
SL:SetStackDots(stack, FULL)
if stack == 0 then
stack = FULL -- 归零即满: 本刀算第三刀
SL:RegOnce("echo_slash", ECHO_DELAY, function()
SL:SpawnGhostSlash("player", ECHO_PCT)
SL:Damage("monster", raw * ECHO_PCT)
SL:PopMarkTag("monster", "内劲")
SL:RingWave("monster", 30, "blue_ring")
end)
end
end
SL:On("player_hit", onPlayerHit)
return InnerForce
取模循环的归零即满是个小陷阱:stack % 3 的结果零到二,零代表"攒满",代表"没攒"的是二——这行的语义要在注释里写死,不然三个月后没人记得零是满还是空。
影子刀的结算走一次性的延迟回调,慢半拍出鞘——影子比正刀慢半拍,这半拍是"影子里再补一刀"的画面来源,同步出刀就成了双刀。目标死亡时影子刀自动落空——回调里先查目标的存活,亡者身上飘不出伤害,空引用和鞭尸两种事故一起防了。
三、半额的定价与匀速的奖励
影子刀定在半额,是这套玩法的秤:全额,第三刀变双倍爆发,玩家开始攒着不砍;低于三成,影子像没吃饭,攒劲成了义务劳动。半额的妙处在"第三刀值得期待但不值得等"——节奏匀的玩家三刀两响,输出自然高一截;为了影子硬等节奏,反而亏了正刀的档。断档的惩罚也要轻:内劲不因挨打清零、不因时间流逝衰减——它只认刀数,不认别的,这份纯粹让它成为最"讲理"的资源:手上有刀,劲就在攒。和怒气的分账写清楚:怒气是挨打和打人双通道攒的大资源,攒满放一个大的;内劲是只认攻击次数的小循环,攒满送半刀——一个是大招的蓄水池,一个是节奏的节拍器,玩家分清了,才知道该留哪个该匀哪个。
内劲的断档惩罚要轻:不砍不清零、挨打不清零——它只认刀数不认别的,这份纯粹让它成为最讲理的资源。连砍的节奏还有一层进阶:第三刀故意放缓半拍,影子出鞘的时机正好接上第四刀的起手——匀速是及格,卡着影子的拍子砍是高手,节拍器的上限永远留给练的人。最后一条给表现组:影子出鞘的残影要走蓝色——正刀的红、影子的蓝,两条刀光一红一蓝交替,玩家扫一眼刀光的颜色就知道这刀带没带劲——颜色是节奏的记谱法,比任何读数都直观。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…