【游戏功能】
移动组翻到一笔报错日志:追击怪的行走模块每三十四步抛一次"落脚点异常",重试三次才继续走,追人的时候一卡一卡像在跳。排查了一晚上,模块没坏——是余烬路在它脚下铺火印,火印的寿命判定和它的落脚判定挤在同一个步进里互相踩,落脚点一查是"着火的地面"就报异常。这口锅最后还是配方背了:火印作为会自己变状态的地形,必须单独记账。今天拆余烬路,看"足迹地形"怎么把一双脚,变成一路火种。
一、点燃、铺印、烧路三段
余烬路的循环三段。点燃段:一枚火种砸在怪身上炸开,它周身腾起橙光——点燃段是全技能的立约:从这一步起它不再只是个追你的怪,它是移动的火源,它走到哪儿,地面就烧到哪儿。铺印段:它每走三十四步就留下一枚火印,火印是带橙圈的小火坑,三秒寿命,踩上的人半秒掉三血——铺印段是全技能的核心:火印不是装饰是地形,一枚不致命、一路要人命,顺着来路追的人等于自己给自己铺刑场。烧路段:火印一枚一枚到期熄灭,地面从橙烧回灰——烧路段是全技能的退场:火路的寿命跟着脚步走,它停下火就断了,它死了火印也跟着清——地形是有主人的,主人倒了刑场作废。三段的核心是"路即武器":余烬路不控人不砸伤害数字,它只是把"走位"这件最基础的事变成了一道判卷题——每一步踩在哪里,半秒后都有答案。
完整演示在这,默认自动循环:
fx-embertrail
二、幂尔框架实现:火印是一张带寿命的脚印表
余烬路的账本就是一张带寿命的脚印表——
local EmberTrail = {}
local FOOT_GAP = 34 -- 每走三十四步留一枚
local FOOT_LIFE = 3.0 -- 火印三秒寿命
local FOOT_DPS = 6 -- 踩上每秒六血
local feet = {}
local footT = 0
function SL:IgniteTarget(target)
target.lit = true
SL:TipAbove(target, "余烬路!")
end
function SL:OnMonsterMove(target, step)
if not target.lit then return end
footT = footT + step
if footT >= FOOT_GAP then
footT = footT - FOOT_GAP
table.insert(feet, { x = target.x, y = target.y, life = FOOT_LIFE, tick = 0 })
end
end
function SL:OnTick(dt)
for i = #feet, 1, -1 do
local f = feet[i]
f.life = f.life - dt
if f.life <= 0 then
table.remove(feet, i) -- 到期自己灭
else
f.tick = f.tick + dt
if f.tick >= 0.5 then
f.tick = f.tick - 0.5
SL:DamageNear(f.x, f.y, 24, FOOT_DPS * 0.5) -- 谁踩谁挨
end
end
end
end
return EmberTrail
按步长记印是全技能的筋骨:footT 攒步数不攒秒数——走得快印就密、走得慢印就疏,火路永远铺得均匀;结算倒序边减边删,半秒一跳的判定写在寿命表里面,火印的地形账和伤害账就永远不会两套。
三、铺印的演出规格
火印是全技能的脸面:一枚一枚的橙圈小火坑,边缘亮、中心暗,踩上去先亮一圈再掉血——火印是"看得见的陷阱",陷阱看得见才叫地形,看不见的叫暗坑。间隔要"匀":三十四步一枚,走出来的火路像一串脚印——匀的间距才有"路"的感觉,密一倍像着了山火,疏一倍就断了路。寿命要"褪":三秒里橙圈从亮烧到暗、最后一帧整枚沉下去——褪色是倒计时,玩家看颜色就知道哪一枚还能踩哪一枚快灭了。点火要"炸":火种落身的那一瞬炸一圈橙环、怪的整体亮半拍——点燃是技能的开关,开关要有声响有亮光。清场要"净":怪一倒所有火印同一帧熄灭——火的主人没了,刑场立刻拆除,一根火星都不留——留着的火印是幽灵地形。
四、定价与三条印规
足迹地形的定价一句话:三十四步一枚、三秒寿命、踩上半秒三血——它一路追你三十步,身后就是九枚火印一条火巷,顺着追的人半条命交代在巷子里;绕着走的人一步不多跑。三条印规:其一,火不认人——它自己踩自己的印不掉血,火印只烧别人,放火的人和被追的人受的完全是两套规则;其二,印随脚步——它停火就断,火路的长度是追击欲望的长度,火没有自己的意志;其三,主亡场清——怪倒火灭,地形跟着主人一起注销,不存在无主的野火。与腐骨沼对照着看:同是"会烧人的地形",腐骨沼从一点往外长——圈是主动铺开的领地,考的是预判;余烬路跟着脚步走——路是被动留下的痕迹,考的是绕行,活地形族的两个门派一个自己长、一个跟着走,长出来的考预判,走出来的考脚程。
五、余烬路的绕行学:别顺着它的来路追
余烬路真正交付的是"追击的路线":它把"追"从一个方向感的事变成一张路线图的事——直追的人踩火巷,绕切的人走坦途,答案全在那一串橙圈里。老玩家的用法是"切后":不追尾,等它扑空的回头间隙斜插到侧翼,来路留给它自己踩——火巷是它铺的,让它自己走。对观战者,一条亮橙的火巷在深色地面上拖出来、追的人贴着巷边绕行,是最有"地形感"的镜头:战场自己长出了路线,路线自己会咬人——观众一眼就看懂为什么高手不直线追。工程收尾记一笔:火印的地形判定要和行走判定分开两本账——那句落脚点异常就是两本账挤一个步进挤出来的,地形归地形表、行走归行走表。最后留给数值组的一句话:半秒三血对火巷九枚,直追一趟五十四血——余烬路的定价不是单枚多疼,是"这一路火巷能不能把直线追击改弯"——改弯的那几步,才是它真正打出的伤害。
写完再留一句给做足迹地形的同学:火印最容易做成"移动特效顺带扣个血",而它本该是一串带寿命带判定的小火坑——间距要匀出脚印感、寿命要褪色给人看、主人一倒刑场要拆干净——路立住了,玩家才会低头看脚而不是只盯着怪。
补一个演示彩蛋位:最后一枚火印熄灭的那一帧,坑心会剩一粒白灰亮半拍再灭——白灰的一瞬是"这条路过火"的最后确认,确认一过,地面干干净净像什么都没发生过。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 if _shadowT 0 then spd = noShadow and 12 or 24 end ——一行…
【游戏功能】 魂卫的全机制就一句:杀掉小怪化一盏魂火跟着你走,每盏魂火两秒自动劈最近的大怪一口八点,至多三盏——「引魂!」按…
【游戏功能】 一道咒飞过来,硬吃是四秒里一秒十的钝疼——有没有第三条路?纸人替灾给的就是第三条路:贴一个纸人在身后,八秒里头…
【游戏功能】 挨打还能赚钱?水镜式的答案是:挨的刀七成存进镜里不扣血、三成照常疼,六秒后点「还镜」,存量乘一点五放成水炮——…
【游戏功能】 if _mirrorT 0 then SL:TipAboveMe("免疫") return end ——一道写…
【游戏功能】 远近战的矛盾怎么解?远战的答案是把怪挡在射程外,近战的答案是把人拖进射程内——缩地阵给的第三个答案最蛮横:圈只…