【游戏功能】
法术共振又报了一个陌生错:stance consumed by damage pipeline——抱月剑法的架势标记在伤害管线里被吃掉了。追了半天才发现:架势是一个布尔标记,而"挨打"这个事件在管线里走了三层钩子,某一层顺手把标记清了——反击窗口还没开始就没了。这个报错把反击类技能的命门顶了出来:架势是状态,窗口是状态的一部分,清它的时机比立它的时机金贵十倍。今天拆抱月剑法。
一、架势、接爪、月弧三段
抱月剑法的循环三段。架势段:战士剑交左手、剑背朝外,身前亮出一弯紫色月印,头顶挂着倒计时——月印是"请君入瓮"的告示:这段时间来打我,是要付账的。接爪段:狼怪扑击落在架势期内——攻击照单全收但不掉血,同一瞬间月弧从身前划出,把这一爪原路"弹"回去——反击的方向与攻击的来向同轴,"原路"二字是抱月的魂:它不是趁乱补刀,是以彼之道还施彼身。月弧段:紫色弧光追着被弹回的狼怪走完全程,大字结算——反击伤害要压过普攻一截,"挨打换来的刀"必须比白送的刀贵。三段的核心是窗口:架势五秒是买来的承诺,接住一爪承诺兑现、月印即散——一次架势只保一枪,这个"一次"就是抱月全部的紧张感。
完整演示在这,默认自动循环:
fx-mooncounter
二、幂尔框架实现:架势状态与受击钩
架势是带寿命的标记,反击挂在受击的前置钩上:
local MoonCounter = {}
local STANCE_TIME = 5.0
local COUNTER_DMG = 88
local stance = 0
function SL:CastStance(actor)
SL:PlayActorAct(actor, "cast")
stance = STANCE_TIME
SL:AttachFx(actor, "moon_mark")
SL:ShowBuffBar(actor, "抱月架势", STANCE_TIME)
end
function MoonCounter.OnBeforeDamaged(actor, attacker, dmg)
if stance <= 0 then return dmg end -- 无架势: 原样挨打
stance = 0 -- 消耗架势: 一次即散
SL:CancelFx(actor, "moon_mark")
SL:SpawnArc(actor, attacker, "moon_crescent", COUNTER_DMG)
SL:PushActor(attacker, 240)
SL:ShowTipAbove(attacker, "-" .. COUNTER_DMG .. " 抱月")
return 0 -- 这一击全额免单
end
function MoonCounter.Tick(dt)
if stance > 0 then
stance = stance - dt
if stance <= 0 then
SL:ShowSystemTips("架势空转 — 月印散了")
end
end
end
return MoonCounter
开头那个报错的病根就拆在这:stance = 0 的清零只能写在受击钩这一处——别的地方"顺手清理",窗口就死在半路。反击挂在 OnBeforeDamaged 而不是伤害后:免单和反击必须同帧同源,分两帧做,玩家的血条会先跳一下再弹回去,观感是"打了再反"而不是"没打进来"。
三、月弧的画法与架势的戏
月弧是全场最讲"反弹"的特效:弧光从角色身前生出、沿着攻击来向的反方向推进——弧的行进路径就是那记攻击的倒放,玩家的眼睛自动读出"弹回去了"。弧画两层:紫白双层弧线、行进中微微张开,弧末端追一撮淡紫屑——月弧要"轻而快",重量感留给命中那一下的大字与震屏。架势期的戏比反击多:月印在身前低频脉动、角色重心后移半步、剑背横在胸前——架势是"不还手的姿态",姿态演足,玩家才读得出"接下来不一样"。空转的收尾也要给:五秒没人搭理,月印缩成一点散去、角色收剑——架势空了但戏要收干净,空转的尴尬感越轻,玩家越敢在安全期浪费架势。
四、反击的公平账与时机学
抱月的定价全在"一次"上。架势接住任何一爪就散——群战里两个小怪连扑,第二爪全额入账,架势在人群里是消耗品不是护身符,这条"一次"是反击类的公平底线。另一头的公平给怪物:狼怪的扑击有前摇,前摇就是玩家的读秒——架势掐在对方抬手时立起,接得最稳;提前五秒立起,等于白送对方一个"等它散"的战术位。演示的自动演武把这套时机演了出来:狼怪每两秒多一扑,架势卡在扑击前摇的中段立起——玩家看两轮就能学会"看爪再架"。还有一处值得点名的手感细节:接住的那一帧要给双方同时反馈——狼怪闪白弹退、角色月印崩散——一次反击在画面上是"一进一出",双方的戏份一样多,反击才像一次交换而不是一次单方面的赖账。架势立、窗口清、弧弹回、两厢反馈——四件咬合,"背后偷袭先问过这刀"才不是嘴硬。
五、月印的进度条与反击的冷却账
架势期那五秒要"读得见"。月印除了脉动,还兼职倒计时:月弧的弧长随剩余时间收缩——五秒的满月、两秒的半月、临散的残月——月相即倒计时,玩家的余光读月相比读数字快。这个设计还有一层免费的叙事:月缺到尽头散架势,像极了一轮月落——抱月二字的意象从机制里自己长出来。反击的冷却账要单算:架势冷却从月印散去(无论接住还是空转)起算,而不是从架势立起——五秒架势若从立起算冷却,玩家实际享受的窗口被冷却吃掉一半,反击技会沦为装饰。伤害的数值再补一笔账:反击八十八、普攻四十出头——反击恰好是普攻的两倍挂零,这个倍率是心理刻度:挨一下打换来两刀的量,"以彼之道"在数字上说得通;若给到三倍以上,抱月就从反击技变成引怪送头的刷刀器,定位立刻不正。最后是团队位:抱月架势立起来的时候,队友的治疗与增益照常生效——架势不锁增益,这条宽容让"架势+奶"成为合法连招,也把"反击是交换不是无敌"的边界又描了一道。月相即倒计时、冷却从散算、两倍挂零、增益照常——四笔账清了,抱月剑法才立得住"防守的艺术"这块招牌。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的爪子明明挥向了你,怎么落在自己脸上?夺舍的答案邪门到家:道士的魂钻进了狼怪的身子——占据三秒,这三秒里它每…
【游戏功能】 墙又不追人,怪为什么次次撞?水墙的定位写在物理里:它立在路中央六秒,是一块"会推人的地形"——狼怪巡逻的弧线扫…
【游戏功能】 左手五刀右手五刀,怎么就数得清是双刀?双刀交叉斩的答案在弧线上:左刀的弧向右扫,右刀的弧向左扫,两把刀的弧线在…
【游戏功能】 隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草…
【游戏功能】 雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶…
【游戏功能】 跑赢了的怪,怎么反倒挨了烧?火焰冲刺的账目反直觉就在这:冲刺是位移,火径是遗产——人冲过去了,路留在原地烧三秒…