【游戏功能】
场地中央凭空烧起一片火,五秒不灭——狼怪放完这一手扬长而去,留你在原地算计"从哪边绕"。留焰的机制就是这场算计:它爪过或喷过的地上着火,火要烧五秒——火径的位置五秒不挪窝,穿过挨烧、绕过保平安。今天拆留焰,看"留场系"怎么把一纵即逝的火焰,变成改写走位的地形。
一、落火、封路、绕行三段
留焰的循环三段。落火段:它一爪拍在你前方一百二十像素的位置,火径当场着起,一圈橙红的火焰烧足五秒——落火段是全技能的封路:火径的位置不是随机的,是它算准了你的走位路线拍下去的——火落在你要经过的路上,你过不过?封路段:火径烧着不挪窝,绕开它的路要多走一截——封路段是全技能的地图改造:一秒前平地还能直穿,一秒后中间横着一堵火墙,地图被一块火牌改写了。绕行段:贴着火径的边缘擦过去,脚不进圈就一分不扣——绕行段是全技能的走位课:绕的路线贴多近算安全,全看火圈边缘和你的脚程——擦边而过的人,才是这门功夫的毕业生。三段的核心是"火即地形":留焰的火不追人不烧人,它只是把一块平地改成了五秒的火池——池子不动,动的只有绕池子的人。
完整演示在这,默认自动循环:
fx-flametrail
二、幂尔框架实现:火径是一张带寿命的场子
留焰的账本是一张带倒计时的场子表——
local FlameTrail = {}
local FIRE_LIFE = 5.0 -- 火烧五秒
local FIRE_R = 42 -- 火径半径
local BURN_DMG = 8
local fires = {}
function SL:LeaveFire(x)
table.insert(fires, { x = x, t = FIRE_LIFE })
SL:ShowTipAbove(x, "留焰")
end
function SL:OnTick(dt)
for i = #fires, 1, -1 do
local f = fires[i]
f.t = f.t - dt
if f.t <= 0 then
table.remove(fires, i) -- 五秒一到火自己灭
elseif math.abs(SL:GetValue("actorX", "self") - f.x) < FIRE_R then
SL:HitActor("self", BURN_DMG) -- 圈里站着:持续灼烧
end
end
end
return FlameTrail
持续灼烧是留焰和一次性火圈的分界:FIRE_R 圈内每帧都在结算——火径不是陷阱是一次判定的区域,它是一块持续结账的场子。
三、火径的演出规格
火径是全技能的招牌:一圈橙红的火苗贴着地跳动,火苗的高度随剩余时间缓降——火苗渐矮就是燃烧的倒计时,火矮到贴地,这一径就该熄了。灼烧的结算要"密":圈里站着每零点五秒一跳八点的灼字——小刀密割比大刀一刀更让人绕着走,灼字跳得越密,绕行的决心越大。火径的边缘要"晃":火圈的边缘做热浪扭曲——扭曲的边缘在说"这条线是真的烫",直线不晃的火圈只是贴图。狼怪的爪击落火要"准":它一爪拍下,火径就在你撤退的必经之路上生起来——落火的落点是它的战术,不是随机数。
四、定价与三条焰规
留场系的定价一句话:一圈八点零点五秒一跳、五秒一径、径位五秒不挪——站在圈里五秒就是八十点,绕开的人一分不掏。三条焰规:其一,火不认人——狼怪自己踩进火径照样掉血,火径的账本不认施法者的名字;其二,灼烧可打断施法——站在圈里念符会被灼烧打断,火径封的不只是路还有法;其三,火灭即净地——五秒一过火焰散尽,同一位置可以立刻再落新火,旧火不留任何余烬判定。与拒火环对照着看:同是"火与位置"的学问,拒火环是环推人——把人从身边推开,火是推力;留焰是火占着地——人自己绕,火是地,火焰系的两个门派在"火赶人"还是"火占地"上分了家。
五、留焰系的绕行学:火径地图是它画的,路线是你画的
留焰真正训练的是"在限制下规划路线"的能力:火径一落,整张地图的通行成本重新计算——从A到B的直路被封了,绕行的弧线怎么画最短、哪段弧线在它下一爪的射程里、绕行时要不要回头——三问问完,路线就有了。老玩家的绕行不是绕远,是把火径当成"它格挡方向"的情报:火径封住的路就是它预判你会走的路,反着走反而能绕到它没防的一侧。对观战者,狼怪落火、玩家绕火的两秒,是全场最有"下棋感"的攻防:火是它的棋,绕是你的棋,一局五秒。工程收尾记一笔:火径的灼烧结算要按帧判离开而不是按帧判进入——进圈烧一次出圈就停的火,和站在圈里持续烧的火,是两个完全不同的技能,留焰的"留"字就要留出持续感。最后留给数值组的一句话:八点零点五秒的灼烧密度,是逼人绕行的全部杠杆——灼得太轻没人绕,灼得太重直接劝退,密度调到"绕的人庆幸、站的人后悔",这一径火就算烧明白了。
写完再留一句给做留场系的同学:地面火焰最容易做成"一个着色的圆",而它本该是一块五秒的临时地形——火苗要有高低、灼烧要有节拍、熄灭要熄得准时,地形立住了,玩家的绕行才不是躲招,是读图。
补一个演示彩蛋位:火径熄灭前的最后一秒,火苗会集体低头弯一次腰再灭——集体弯腰是"这一径火谢幕了"的谢幕礼,谢幕礼一完,这块地又变回了谁都可以踩的平地。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版的炮台索敌逻辑有个隐蔽报错:炮台永远打同一个怪——即使那只怪已经死了,索敌的游标也不挪窝。追到底索敌的游…
【语法算法】 先抛一个坑:打不完的火系怪怎么办?火抗怪火打不动,换冰系技能要切装备要换面板——切完黄花菜都凉了。元素转换的答…
【语法算法】 上个月的事故复盘会上有个数字被念了三遍:四成——策划写的是"同伴陪疼四成",代码落下去成了"陪疼四十点",两只…
【语法算法】 单行代码拆解:弹射初速=-420——弹射的全部动力就这一行的负初速。负号朝上、四百二十是弹射的初速大小——踩上…
【语法算法】 上一版的减速类模块全按"乘以零点五"来写,帧率无关的版本照搬了这套写法——结果高帧率机上减速效果好,低帧率机上…
【语法算法】 先抛一个坑:怎么把散在四处的怪聚到一起打?逐个拉是笨办法,一个范围技又只能打一片——引力球的答案是一个会动的吸…