【游戏功能】
狼烟的熄灭判定就这一行:
if smoke <= 0 then beacon.out() end
烟量归零,狼烟熄灭——扑灭狼烟的全部机制就这一行。可这一行的前面是狼怪的召唤意图,后面是援兵到场的倒计时。狼烟起这套"扑灭召唤"的玩法,拆开看是一场和时间赛跑的救火。
一、点火、扑灭、援绝三段
狼烟的三段。点火:狼怪残血脱离战斗,跑到狼烟台前点火——橙色的火苗从烟台上腾起,头顶"狼烟"的进度条开始走,六十格的烟量一点一点烧——点火是狼怪的求救信号,烟烧尽的那一刻,援兵到场。扑灭:玩家跑到烟底下扑打——每扑一下烟量掉两成,蓝色的水花特效盖过橙色的火——扑三下烟熄,"狼烟灭了"的蓝字告诉玩家:援兵没了,安心收狼。援绝:烟熄之后,狼怪失去了求救的手段,剩下的血量玩家慢慢磨——援绝的状态要给玩家看到:狼烟台的火苗彻底熄掉,灰色的烟柱证明它试过了、失败了。三段连起来:狼烟玩法考的是优先级——先追狼还是先扑烟,扑烟的每一下都在和燃烧的进度赛跑。
完整演示在这——残血狼一点烟就跑过去,点「扑灭!」三下扑熄它:
fx-beacon
二、幂尔框架实现:烟量燃烧与扑打结算
幂尔框架里狼烟是一个带燃烧进度和扑打交互的场景物:
local WolfSmoke = {}
local SMOKE_MAX, BURN_TIME, PU降幅 = 60, 5, 20
local smoke, burning, burnT = SMOKE_MAX, false, 0
local function onMonsterHurt(monster)
if smoke <= 0 then return end
local pct = SL:GetHP(monster) / SL:GetHPMax(monster)
if pct < 0.4 and not burning then
burning = true
burnT = BURN_TIME
SL:SpawnBeacon(beaconX, beaconY)
SL:ShowTipAbove(beaconX, "狼烟起!")
end
end
local function onTick(dt)
if not burning then return end
burnT = burnT - dt
smoke = math.max(0, smoke - SMOKE_MAX / BURN_TIME * dt)
SL:SetBeaconGauge(smoke / SMOKE_MAX)
if smoke <= 0 then
burning = false
SL:SpawnReinforcement() -- 援兵到场
SL:ShowTipAbove(beaconX, "援兵到场!")
end
end
function WolfSmoke.Pat()
smoke = math.max(0, smoke - 20)
SL:PlayBurst(beaconX, "pat_splash", 10)
SL:ShowTipAbove(beaconX, "扑灭 -20%")
if smoke <= 0 then
burning = false
SL:ExtinguishBeacon()
SL:ShowTipAbove(beaconX, "狼烟灭了!")
end
end
SL:On("monster_hurt", onMonsterHurt)
SL:RegTick("smoke_tick", onTick)
SL:RegClick("pat", WolfSmoke.Pat)
return WolfSmoke
onMonsterHurt 的血线检查是点火的扳机:残血才点火——满血的狼不点火,玩家的扑灭技能才有明确的触发窗口。
三、六十格的烟量与扑打的节奏
六十格烟量五秒烧尽是援兵的倒计时:每秒烧十二格,玩家扑一下灭二十格——扑三下的节奏刚好赶在烧尽之前扑灭,这个数学关系就是整套玩法的骨架。扑一下要贴身也是分寸:够不着烟就扑不了——玩家要在"追狼压血"和"跑过去扑烟"之间来回跑,扑灭玩法的跑位量全在这一来一回。狼怪的点火优先级也有讲究:它只在残血点火,而且点火会脱离战斗——点火瞬间玩家的目标暂时丢失,追击的路径被迫从"追狼"改成"追烟",目标的切换就是扑灭玩法的操作深度。最后一条给表现组:烟量条要画在狼烟的火苗根部而不是屏幕角落——玩家扑打的时候眼睛盯着火苗,进度条跟着火苗走,扑打的每一下都有即时的反馈,玩家才知道还差几下。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…