【游戏功能】
帮里那个刺客吐槽了半个月:他的撕裂"看着血呼啦的,伤害表里查无此技"。查了结算记录才发现,撕裂的跳伤全被记录成了普攻尾数——持续伤害没有独立身份,表里自然查无此技。表现做得再像,账面上无名无分,玩家就不认。今天拆撕裂创伤,把"伤口"这门持续伤害的表现做扎实。
一、伤口是长在身上的
撕裂和火球毒雾那些"挂在身上"的持续伤害不同,它讲究一个"长在身上":撕开的伤口留在狼怪身侧,红痕两三道、微微搏动,血珠顺着往下滴。滴血的频率是这套表现的灵魂——站着不动时慢滴,一跑动立刻翻倍,连脚步带起的尘土都染上红星。"移动加剧流血"不是数值文案,是玩家看得见的因果:它跑得越欢,血掉得越急,于是追与不追都成了决策。每跳结算时数字从伤口附近冒出,位置带随机偏移,几跳下来狼怪身边像下过一场红雨。叠层时伤口再加一道,数字带上层数标记,层层加深看得见摸得着。
完整演示在这,默认自动循环,可调流血跳数:
fx-rend
二、幂尔框架实现:流血表与跳动结算
伤口按目标管理,每跳独立结算并带身份标记:
local Rend = {}
local KEY = { TICK = 0.6 }
local wounds = {}
function Rend.Apply(self_, target, stacks)
stacks = math.min(3, (wounds[target] and wounds[target].stacks or 0) + 1)
wounds[target] = { stacks = stacks, jumps = 0, max = 4, timer = 0 }
SL:PlayActorAct(self_, "attack")
SL:ScheduleOnce(function()
SL:DeductHp(target, 14)
SL:ShowHitNum(target, 14, "rend", stacks)
SL:PlayActorAct(target, "stuck")
SL:StartBleedFx(target, stacks) -- 伤口红痕常驻
SL:Schedule(function(dt)
local w = wounds[target]
if not w then SL:UnSchedule("rend" .. target) return end
local moving = SL:GetValue("isMoving", target)
w.timer = w.timer + dt * (moving and 2 or 1) -- 移动加剧
if w.timer >= KEY.TICK then
w.timer = w.timer - KEY.TICK
w.jumps = w.jumps + 1
local dmg = 6 * w.stacks
SL:DeductHp(target, dmg)
SL:ShowHitNum(target, dmg, "bleed")
SL:PlayBurst(SL:GetValue("actorX", target),
SL:GetValue("actorY", target) - 52, "blood_drip", 1)
if w.jumps >= w.max then
wounds[target] = nil
SL:StopBleedFx(target)
SL:UnSchedule("rend" .. target)
end
end
end, 0.016, "rend" .. target)
end, 0.26)
end
return Rend
伤害结算带上 rend 身份标记,结算表里从此有名有姓——开头那位刺客的委屈到此为止。
三、滴血频率与移动耦合
"移动加剧"的实现要点是把移动状态读进计时器:isMoving 为真时计时器双倍速,滴血粒子的生成率同步翻倍。这里有个表现陷阱:狼怪被恐惧逃跑时也算移动,恐惧加撕裂会变成处决机——要么给恐惧状态的流血设上限,要么在恐惧期间把加剧系数砍半,两个方案都比"放着不管"体面。伤口红痕的渲染走受击帧之外,别叠在受击白闪上,白闪一盖红痕全没了。
叠层的视觉语言也要分层:一叠一道红痕,三叠三道且搏动加快;结痂消失时红痕从下往上淡出,别齐刷刷一起消失——伤口愈合是有过程的,过程感就是这套表现的高级感所在。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 治疗术的流派里吵了几十年的架:瞬发治疗保当下,持续回血养节奏——回春术是后一派的掌门。回春的机制是一层温火:焐…
【游戏功能】 血条的分配学里有个扎心的现象:满血的人和一丝血的人站在同一道箭雨里,狼怪的爪子永远优先够着后者——血量不均是队…
【游戏功能】 隐蔽的报错单上写着一行怪数据:同一个技能,伤害记录在六十三和四十四之间跳——查了半天配置表,两套数值都"没配错…
【游戏功能】 治疗量的统计表上有一栏常年被无视:溢出治疗——奶到满血之后白白流掉的那部分。溢疗的机制把这栏捡了回来:满血再奶…
【游戏功能】 群攻技能的尴尬人人都懂:三只狼站得东一只西一只,六百点的群符砸下去只烧到一只——剩下两只在火圈外看得清清楚楚。…
【游戏功能】 if seal.t <= 0.4 then dmg = dmg 2 ——一行卡着符印尾巴翻倍的判定,养出了压哨…