【游戏功能】
狼怪的攻击分两种:普攻十三点、技能三十八点——差二十五,差的就是这二十五。散功的机制就一条:掌力拍散它的内力,六秒里它只能普攻——普攻十三、技能三十八,差的就是这二十五。今天拆散功,看"封技系"怎么把大怪最凶的武器,变成六秒的空手。
一、出掌、散功、空手三段
散功的循环三段。出掌段:一记掌力拍在狼怪身上,灰白色的掌纹在它周身散开——出掌段是全技能的宣告:掌纹散开的样子不是伤害,是"功力被打散了"的视觉化——散的不是血是功。空手段:六秒里它的攻击全部退化成普攻——空手段是全技能的降级:十三点对三十八点,降的不是数值是威胁——技能才是不确定性,普攻永远是可预判的。恢复段:六秒一过散功消散,掌纹散尽,它的技能恢复了——恢复段是全技能的警钟:六秒一过它更凶了,散功的窗口不是免费的,是借来的。三段的核心是"降级即削弱":散功不加伤害不控行动,它只是让大怪的威胁降了一档——降的这一档,就是玩家的安全边际。
完整演示在这,默认自动循环:
fx-drainki
二、幂尔框架实现:散功是一面降级的闸
散功的账本就一面降级闸——
local DrainKi = {}
local DRAIN_T = 6.0 -- 散功六秒
local DRAIN_CD = 9.0
local PLAIN_ATK = 13
local drain = { t = 0 }
local boss = { atkT = 2.2, skillT = 5.0 }
function SL:CastDrainKi(target)
drain.t = DRAIN_T
SL:ShowTipAbove(target, "散功")
end
function SL:OnTick(dt)
if drain.t > 0 then
drain.t = drain.t - dt
if drain.t <= 0 then drain.t = 0 end
end
boss.atkT = boss.atkT - dt
boss.skillT = boss.skillT - dt
if boss.atkT <= 0 then
boss.atkT = drain.t > 0 and 3.2 or 2.2 -- 散功期普攻更慢
SL:PlayActorAct("wolf", "attack")
SL:ScheduleDelay(0.2, function()
SL:HitActor("self", PLAIN_ATK)
end)
end
if boss.skillT <= 0 and drain.t <= 0 then
boss.skillT = 5.0
SL:PlayActorAct("wolf", "cast")
SL:ScheduleDelay(0.3, function()
SL:HitActor("self", 38)
end)
end
end
return DrainKi
散功期普攻变慢是全技能的隐性削弱:3.2 比 2.2 多的那一秒,是散功额外送的——散功不光降级,还拖了节奏。
三、降级的演出规格
散功掌纹是全技能的脸面:灰白色的掌印散在它周身,掌印一圈一圈往外扩——掌纹要"扩",扩散的掌纹才有"功力被打散了"的弥漫感。空手期它出普攻的画面要"干":没有技能特效、没有前摇光柱,就是一拳一拳地干挥——干挥的普攻和有特效的技能放在一起,降级的落差就全靠特效的有无来演。散功的倒计时浮在它头顶:六秒的灰字一秒一秒地缩——倒计时是玩家的定心丸:数字在,就安全;数字没了,就跑。恢复的那一瞬要"亮":技能恢复的光效从它身上炸开——恢复的排面比散功的排面更响,响得玩家知道"它满血复活了"。
四、定价与三条功规
封技系的定价一句话:散功六秒、普攻十三、冷却九秒——六秒的封技换九秒的冷却,窗口占比三分之二,这门功夫的运行时间大部分在生效。三条功规:其一,散功不禁普攻——封的是技能不是攻击,被散的大怪照常挥爪照常追人,散功降的是威胁级别不是战斗力;其二,散功不叠加——两道散功掌不产生十二秒的效果,散功取的是最长的那一段;其三,散功不控走位——被散的大怪照样追你照样绕后,散功封的是技能不是移动。与沉默对照着看:同是"让它用不出招",沉默是封口——嘴闭上不能念咒;散功是散功——功散了内力没了连嘴都不用闭,封技系的两个门派在"封嘴"还是"散功"上分了家。
五、散功系的降级学:从三十八到十三,是质变不是量变
散功真正交付的是"确定性":散功期里大怪的每一次攻击都是十三点的普攻——可预判、可格挡、可计算。这门功夫把大怪从"随时可能放大招的不确定威胁"降级成了"只能普攻的已知量"——确定性比伤害更值钱。老玩家的用法是"散功期硬打、恢复期散走":六秒的散功期是全队的输出爆发窗口,散功消散的前一秒所有人撤退拉开——撤退的时机不是感觉,是散功倒计时的最后一秒。对观战者,大怪从三十八的技能变成十三的普攻,两种伤害数字的落差就是散功的全部存在感——落差越大,散功的价值越大。工程收尾记一笔:散功的视觉要区分"降级中"和"已恢复"两个状态——降级中的掌纹是灰色的、恢复后的掌纹是金色的,颜色切换的瞬间就是大怪"变回正常"的一帧——这一帧必须醒目,不醒目的恢复等于没恢复。最后留给数值组的一句话:六秒的封技对九秒的冷却,运行占空比三分之二——散功系的定价不是封了多少秒,是"封的六秒里你多活了几个回合",多活的回合数才是真正的账面。
写完再留一句给做封技系的同学:技能封锁最容易做成"一个沉默标记",而它本该是一记散掉内力的掌力——掌纹要散得看得见、降级要降出落差、恢复要亮出金光,散功的降级立住了,玩家的六秒才不是运气好的空白,是掌力硬生生拆掉的武装。
补一个演示彩蛋位:散功消散的那一瞬,狼怪的周身会闪一下金光再归于正常——金光的一闪是"功力回来了"的复燃,复燃的亮度跟它掉的血成反比——血越少复燃越暗,暗下去的复燃比亮着的复燃更让人心安。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版的炮台索敌逻辑有个隐蔽报错:炮台永远打同一个怪——即使那只怪已经死了,索敌的游标也不挪窝。追到底索敌的游…
【语法算法】 先抛一个坑:打不完的火系怪怎么办?火抗怪火打不动,换冰系技能要切装备要换面板——切完黄花菜都凉了。元素转换的答…
【语法算法】 上个月的事故复盘会上有个数字被念了三遍:四成——策划写的是"同伴陪疼四成",代码落下去成了"陪疼四十点",两只…
【语法算法】 单行代码拆解:弹射初速=-420——弹射的全部动力就这一行的负初速。负号朝上、四百二十是弹射的初速大小——踩上…
【语法算法】 上一版的减速类模块全按"乘以零点五"来写,帧率无关的版本照搬了这套写法——结果高帧率机上减速效果好,低帧率机上…
【语法算法】 先抛一个坑:怎么把散在四处的怪聚到一起打?逐个拉是笨办法,一个范围技又只能打一片——引力球的答案是一个会动的吸…