【游戏功能】
影子分身出场时和本体站在同一个位置——你打一刀它跟着打一刀,你走一步它跟着走一步——影子不是另一个实体,是本体的延迟复制。影武者的机制就这一条:影子模仿你的每个动作,延迟一秒出刀——你打两刀它也打两刀,等于双倍输出但要自己扛住时差。今天拆影武者,看"影子系"怎么把一个延迟一秒的复制体,变成双倍的输出。
一、召唤、模仿、双打三段
影武者的循环三段。召唤段:一技能召唤影子,影子从本体脚下浮出,半透明的身形站在本体旁边——召唤段是全技能的立柱:影子不是怪物不是盟友,它是一个只做你做过的事的回声体——你打它就打,你停它就停。模仿段:本体每出一刀,影子延迟一秒在同样的位置出一刀——模仿段是全技能的核心:一秒的延迟就是影子和你之间的时差——你打在它前面,影子打在后面,时差的两刀比一刀多一倍。双打段:本体和影子交替出刀,怪被两头夹击——双打段是全技能的兑付:双倍的输出自己扛——扛的意思是你也要挨打,影分身不是保镖是打手。三段的核心是"复制即输出":影武者不提升你的攻击力,它只是复制了你的输出——复制出来的每一刀都是白给的。
完整演示在这,默认自动循环:
fx-shadowecho
二、幂尔框架实现:影子是一条延迟一秒的回声线
影武者的账本就是一个延迟队列——
local ShadowEcho = {}
local ECHO_DELAY = 1.0 -- 延迟一秒
local ECHO_DMG = 32
local shadow = { alive = false, queue = {} }
function SL:SummonShadow()
shadow.alive = true
shadow.queue = {}
SL:ShowTipAbove("self", "影武者")
end
function SL:PlayerStrike(dmg)
if shadow.alive then
table.insert(shadow.queue, { t = ECHO_DELAY, dmg = dmg })
end
end
function SL:OnTick(dt)
for i = #shadow.queue, 1, -1 do
local q = shadow.queue[i]
q.t = q.t - dt
if q.t <= 0 then
SL:HitActor("target", q.dmg) -- 影子的刀
SL:ShowTipAbove("target", "-" .. q.dmg .. " 影")
table.remove(shadow.queue, i)
end
end
end
return ShadowEcho
延迟队列是全技能的骨架:queue 里的每一笔都有一个倒计时——倒计时归零就出刀——影子不是独立思考的,它只是在回放你做过的事。
三、影子的演出规格
半透明是影子的身份证:影子的透明度压在三成五——看得见但看得出来不是本体,透明度太高分不清真假,太低就成了第二个人。影子的同步要"迟":影子走路的步频比本体慢半拍——慢半拍是延迟的视觉化,影子永远慢本体一秒。影子打出的刀要"带影":影子的刀光带紫色而非白色——紫色的刀光是影子的署名色,署了名的刀才知道是谁出的。双打交替要"齐":本体和影子交替出刀,一先一后不打架——交替的节奏好了,双打的输出就像一个人的四只手。
四、定价与三条影规
影子系的定价一句话:延迟一秒、模仿全招、伤害等于本体——影子不加不减不打折,它只做一件事:把你做过的事原样再做一遍。三条影规:其一,影子不能独立——影子没有自己的行动逻辑没有自己的仇恨,它只是本体的回声体,本体停它就停;其二,影子不坦伤——被攻击的是本体不是影子,影子只是输出复制体不是肉盾;其三,影子随距离衰减——本体和影子相距超过二百像素影子消散,影子不是永生的它有范围。与傀儡术对照着看:同是"多出一个自己",傀儡术是自己控制一个独立的替身——替身有自己的血条自己被打;影武者是本体的延迟复制——影子没有血条只有输出,复制系的两个门派在"独立体"还是"回声体"上分了家。
五、影子系的时差学:一秒的延迟就是一秒的艺术
影武者真正讲究的是"时差的运用":一秒的延迟不是缺陷是设计——因为延迟,影子的刀永远打在本体的刀之后,两个刀口形成了完美的交替节奏。老玩家的用法是把时差当成"输出间隔":本体出刀后走位半步,影子出刀正好接上——本体走、影子打,一进一退的节奏就像在跳双人舞。对观战者,本体和影子交替出刀的画面是全场最有"武舞感"的一幕:两把刀一先一后,节奏像心跳一样稳。工程收尾记一笔:影子的位置要始终在本体的对侧——影子在本体对面,两只夹击的站位才有威胁;影子在本体身后,就变成了跟班而不是搭档。最后留给数值组的一句话:延迟一秒对双倍输出,账面是"你多打了一倍但要扛多一倍的时间"——影子系的定价不是输出量,是你能扛住多久的双倍风险。
写完再留一句给做影子系的同学:分身复制最容易做成"一个攻击翻倍",而它本该是一个延迟一秒的回声体——影子要半透明、出刀要延迟同款、双打要交替有节奏,回声体活了,玩家才肯把每一刀都当成双刀来使。
补一个演示彩蛋位:本体和影子同时出刀的那一帧,两把刀的刀光会在空中交叉成一个"X"——X交叉的那一帧是双打最帅的定格,定格看多了,玩家的双刀节奏就跟上了心跳。\r\n\r\n影武者的影子还有一手换位的活法:本体往左挪一步、影子就往右补一步——一左一右互相换位,狼怪被打得不知道该追哪个——影子不是你的复制品,它是你的搭档。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版的炮台索敌逻辑有个隐蔽报错:炮台永远打同一个怪——即使那只怪已经死了,索敌的游标也不挪窝。追到底索敌的游…
【语法算法】 先抛一个坑:打不完的火系怪怎么办?火抗怪火打不动,换冰系技能要切装备要换面板——切完黄花菜都凉了。元素转换的答…
【语法算法】 上个月的事故复盘会上有个数字被念了三遍:四成——策划写的是"同伴陪疼四成",代码落下去成了"陪疼四十点",两只…
【语法算法】 单行代码拆解:弹射初速=-420——弹射的全部动力就这一行的负初速。负号朝上、四百二十是弹射的初速大小——踩上…
【语法算法】 上一版的减速类模块全按"乘以零点五"来写,帧率无关的版本照搬了这套写法——结果高帧率机上减速效果好,低帧率机上…
【语法算法】 先抛一个坑:怎么把散在四处的怪聚到一起打?逐个拉是笨办法,一个范围技又只能打一片——引力球的答案是一个会动的吸…