【游戏功能】
直播里最容易被喷的一句话是"这技能是不是没放出来"。喷火龙息这类持续喷射技能最招这个冤——伤害是分段跳的,第一跳和最后一跳隔了一秒多,观感上就是"喷了个寂寞"。今天拆龙息灼原,核心就一件事:持续技能怎么让观众确认"它一直在生效"。
一、锥形火流的三层结构
龙息的火流不是一团火,是一个锥。近端窄、远端宽,边缘随喷吐抖动——锥形是"从口中喷出"的物理直觉,画成矩形就是喷枪。火流内部三层:中心白亮焰(温度最高、最窄)、中层橙焰(主体)、外层飘散火星(越出锥边越稀疏)。地面的反馈是第二幕:火流扫过之处铺开焦土,焦土从近到远生长,边缘一圈橙线表示"还烫着"。命中反馈分两段:火流吞没狼怪的瞬间一次结算大数字,之后每隔零点四五秒跳一个灼烧小字——大字是"烧到了",小字是"还在烧",两层配合,持续感就有了。
完整演示在这,默认自动循环,可调喷吐时长:
fx-breath
二、幂尔框架实现:持续通道与分段结算
喷吐期间火流常驻、结算分段推进,幂尔框架里一条定时器管全程:
local DragonBreath = {}
local KEY = { BURN_TICK = 0.45 }
function Breath.Cast(self_, target, duration)
SL:PlayActorAct(self_, "cast")
SL:SetValue("breathing", true)
local elapsed = 0
local hitDone = false
local burnTimer = 0
SL:Schedule(function(dt)
elapsed = elapsed + dt
-- 火流常驻渲染: 起点在口部, 终点在目标
SL:DrawConeFx("dragon_fire",
SL:GetValue("actorX", self_) + 20,
SL:GetValue("actorY", self_) - 56,
SL:GetValue("actorX", target),
SL:GetValue("actorY", target) - 56)
-- 首次吞没: 一次大额结算
if not hitDone and elapsed > 0.2 then
hitDone = true
SL:ScreenShake(0.26, 4)
SL:DeductHp(target, 28)
SL:ShowHitNum(target, 28, "breath_big")
SL:PlayActorAct(target, "stuck")
end
-- 灼烧跳: 小额分段
burnTimer = burnTimer + dt
if burnTimer >= KEY.BURN_TICK then
burnTimer = burnTimer - KEY.BURN_TICK
SL:DeductHp(target, 8)
SL:ShowHitNum(target, 8, "burn_small")
end
-- 地面焦土逐步生长
SL:GrowGroundFx("scorched", SL:GetValue("actorX", self_),
elapsed / duration)
if elapsed >= duration then
SL:UnSchedule("breathRun")
SL:SetValue("breathing", false)
SL:StopConeFx("dragon_fire")
end
end, 0.016, "breathRun")
end
return Breath
GrowGroundFx 的第二个参数是生长进度——焦土跟着喷吐时长一起长,火停土也停,因果干净。
三、喷吐朝向与焦土余温
持续技能最怕目标跑出范围。锥形火流的追踪策略有二选一:火随头转(必烧但人物变成定身炮台)或火钉原地(可躲但人物能走位)。演示选前者并做了补偿:喷吐期间人物移速降为零、但朝向以每秒 60 度的限速缓慢追踪——狼怪横向跑位能甩掉火流边缘,正面硬闯躲不掉,攻防两边都有解。焦土的余温要有衰减:火停之后焦土橙线十秒内熄灭,期间踩上去仍有灼烧小跳——地面从"武器"过渡回"地形",这个衰减过程就是技能退场的礼貌。最后,火星粒子永远飘向火流外侧,内侧被焰体占满,外侧的零星几点才是"火在燃烧"的呼吸感。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 治疗术的流派里吵了几十年的架:瞬发治疗保当下,持续回血养节奏——回春术是后一派的掌门。回春的机制是一层温火:焐…
【游戏功能】 血条的分配学里有个扎心的现象:满血的人和一丝血的人站在同一道箭雨里,狼怪的爪子永远优先够着后者——血量不均是队…
【游戏功能】 隐蔽的报错单上写着一行怪数据:同一个技能,伤害记录在六十三和四十四之间跳——查了半天配置表,两套数值都"没配错…
【游戏功能】 治疗量的统计表上有一栏常年被无视:溢出治疗——奶到满血之后白白流掉的那部分。溢疗的机制把这栏捡了回来:满血再奶…
【游戏功能】 群攻技能的尴尬人人都懂:三只狼站得东一只西一只,六百点的群符砸下去只烧到一只——剩下两只在火圈外看得清清楚楚。…
【游戏功能】 if seal.t <= 0.4 then dmg = dmg 2 ——一行卡着符印尾巴翻倍的判定,养出了压哨…