【游戏功能】
"雷霆万钧和当头落雷有什么区别?"——当头落雷是一道雷劈一次,雷霆万钧是三道雷依次劈、间隔递减、最后一道最粗。今天拆雷霆万钧的表现,看"多段递减间隔"怎么把单体技能变成节奏演出。
一、召唤、第一劈、递减三段加速
雷霆万钧的三段。召唤段:人物施法召唤天雷——召唤的动作就是全场的起点。第一劈:间隔零点三五秒后第一道天雷劈落,紫光笼罩狼怪——第一劈是最细的,因为它是"开胃菜"。递减劈:第二劈间隔零点四三秒、第三劈间隔零点五一秒——间隔递增意味着节奏放慢,放慢的节奏给观众看清楚每一劈的特效。最后一道最粗最亮,因为它是全套的收尾重音。三段的节奏是"密—密—疏":前三劈越来越密,最后一道独立收尾。
完整演示在这,默认自动循环:
fx-thunder3
二、幂尔框架实现:递归间隔与递增特效
三道雷用递归间隔 Schedule,特效随劈数递增:
local Thunder3 = {}
local KEY = { BASE_GAP = 0.35 }
local boltCount = 0
function T3.Cast(self_, target)
boltCount = 0
SL:PlayActorAct(self_, "cast")
T3.NextBolt(target)
end
function T3.NextBolt(target)
boltCount = boltCount + 1
local gap = KEY.BASE_GAP + (boltCount - 1) * 0.08
SL:ScheduleOnce(function()
local wide = 8 + boltCount * 4
SL:PlayFxAt("thunder_bolt" .. boltCount,
SL:GetValue("actorX", target),
SL:GetValue("actorY", target))
SL:PlayBurst(SL:GetValue("actorX", target),
SL:GetValue("actorY", target) - 58,
"purple_bolt", 8 + boltCount * 2)
SL:DeductHp(target, 10 + boltCount * 8)
SL:ShowHitNum(target, 10 + boltCount * 8,
"bolt" .. boltCount)
SL:PlayActorAct(target, "stuck")
if boltCount < 3 then
T3.NextBolt(target)
else
SL:FlashScreen("#d9b8ff", 0.12)
SL:ScreenShake(0.26, 4)
SL:ShowSystemTips("三雷落! 全部命中!")
end
end, gap)
end
return T3
每道雷的宽度和伤害随劈数递增——递增的数值让玩家看到"越劈越大"的节奏递进。
三、间隔递增与最后一道的重量
间隔递增的意义是"让最后一道有分量":前三劈间隔越短越密集、最后一道独立出来才显重量——最后一道的间隔比前一劈多零点零八秒,这零点零八秒的停顿就是全套演出的呼吸。最后一道雷的特效宽度是前三道的一倍:前三道宽度递增、最后一道翻倍——宽度的跳变让最后一道在视觉上"压轴"。最后,三道天雷的音效也要递增:第一道中等音量、第二道音量加高、第三道全频加低音——音效的递增配合特效的递增,雷霆万钧的"万钧"就有分量了。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 if _shadowT 0 then spd = noShadow and 12 or 24 end ——一行…
【游戏功能】 魂卫的全机制就一句:杀掉小怪化一盏魂火跟着你走,每盏魂火两秒自动劈最近的大怪一口八点,至多三盏——「引魂!」按…
【游戏功能】 一道咒飞过来,硬吃是四秒里一秒十的钝疼——有没有第三条路?纸人替灾给的就是第三条路:贴一个纸人在身后,八秒里头…
【游戏功能】 挨打还能赚钱?水镜式的答案是:挨的刀七成存进镜里不扣血、三成照常疼,六秒后点「还镜」,存量乘一点五放成水炮——…
【游戏功能】 if _mirrorT 0 then SL:TipAboveMe("免疫") return end ——一道写…
【游戏功能】 远近战的矛盾怎么解?远战的答案是把怪挡在射程外,近战的答案是把人拖进射程内——缩地阵给的第三个答案最蛮横:圈只…