【游戏功能】
化骨绵掌的狠不在掌落而在掌后:一掌拍上去毫发无伤,三息之后内伤发作——伤是延迟到账的。今天拆化骨绵掌的表现,看"延迟伤害"这个反直觉的机制怎么做出一掌的阴狠。
一、掌劲、潜伏、发作三段递进
绵掌的递进三段。掌劲段:一掌拍在狼怪身上,掌劲入体表面无伤——拍击点的紫色微光是唯一的落掌痕迹,微光就是掌劲的载体。潜伏段:紫气绕体若隐若现,潜伏的倒计时无声走过——潜伏期的狼怪毫发无伤地行动,这份"正常"是暴风雨前的假象。发作段:倒计时归零内伤轰然发作,紫环炸开、狼怪一口黑血喷出、大硬直倒地——发作的伤害数值在掌落时就定了,发作只是兑现。三段的阴狠在"时间差":掌落时不疼、发作时疼——时间差让玩家学会"拍了就跑",三息之后听响就行。
完整演示在这,默认自动循环:
fx-delaydmg
二、幂尔框架实现:延迟注入与发作结算
掌劲注入挂延迟队列,发作时统一结算:
local DelayDmg = {}
local KEY = { FUSE = 3, DMG = 42 }
local pending = {}
function DD.PalmStrike(self_, target)
SL:PlayActorAct(self_, "attack")
SL:ScheduleOnce(function()
SL:PlayBurst(SL:GetValue("actorX", target),
SL:GetValue("actorY", target) - 58,
"purple_mist", 5)
pending[target] = SL:GetValue("engineTime") + KEY.FUSE
SL:SetValue("poisoned", target, true) -- 紫气绕体预兆
end, 0.24)
end
function DD.Tick(dt)
local now = SL:GetValue("engineTime")
for tid, fuseAt in pairs(pending) do
-- 潜伏期的紫气预兆
SL:DrawAura(tid, "purple_pulse")
if now >= fuseAt then
-- 发作
pending[tid] = nil
SL:SetValue("poisoned", tid, false)
SL:PlayFxAt("inner_burst", SL:GetValue("actorX", tid),
SL:GetValue("actorY", tid) - 58)
SL:ScreenShake(0.26, 4)
SL:DeductHp(tid, KEY.DMG)
SL:ShowHitNum(tid, KEY.DMG, "inner_injury")
SL:PlayActorAct(tid, "stuck")
SL:PlaySfx("inner_break")
end
end
end
return DD
pending 表以目标句柄为 key——同一目标身上掌劲没发作就再拍不进去,一目标一掌是规矩。
三、潜伏的预兆与发作的分寸
潜伏期的紫气预兆是"给玩家的信号":紫气越浓发作越近——预兆的浓度是倒计时的可视化,看得见的倒计时才让玩家有反应的余地。发作的瞬间三件套:紫环炸开、黑血喷出、大硬直倒地——发作的伤害数值在掌落时就定了,发作只是兑现。发作的音效用一声闷哼加一声骨响——闷哼是内伤,骨响是化骨,两声连着才是化骨绵掌。最后,潜伏倒计时的可视化分寸要拿捏:紫气的浓度渐深可以,倒计时数字不行——化骨绵掌的玩家不该知道确切时刻,"大约三息"的模糊感才是这门功夫的阴狠。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 威压诀的全机制就一句:把气提到刀上,脚下荡开一圈威压场——圈里的怪刀软一半、出手慢半拍,你的刀对它加五成;怪不…
【游戏功能】 vd = hot and base 2 or base ——一行两倍的乘法,藏在焚祭全部的痛感里:刀翻倍的代价…
【游戏功能】 大怪蓄力蓄到发亮的那一发重击,凭什么有信心接下来?多数玩家的答案是"闪",可闪有冷却、有前摇、有失误——舍身盾…
【游戏功能】 战斗组翻到一笔没人认领的异常:玩家的血条在没有挨打记录的情况下稳定下滑,一秒四点,战斗日志里攻击来源是空的。排…
【游戏功能】 数值组翻过一笔扯皮的账:同一只头目,A 队三分钟放倒,B 队磨了十一分钟还灭了——装备差不到一成,输出差了一倍…
【游戏功能】 借刀符的全机制就一句:一张符掷中谁,谁就中招六秒——六秒里它的爪听你的,转身撕咬自己人,符效一过它回过神来第一…