【游戏功能】
一粒火种扔在它脚边,为什么等了一秒才炸?火莲绽放的答案开在花瓣里:火种落地生根,四瓣火莲缓缓张开——花开到极致的那一瞬,火浪漫一圈,圈内重创圈外无伤。今天拆火莲绽放,看"延迟开花"型AOE怎么把一次爆炸演成一朵花的开谢。
一、掷种、开花、漫焰三段
火莲绽放的循环三段。掷种段:一粒金红火种沿短弧线抛到狼怪脚下,落地的瞬间钻进地里——掷种是"播种":火种要落在怪脚下而不是怪身上,种下去的瞬间它还毫无威胁。开花段:地面裂开微光,四瓣火莲按顺时针缓缓张开、花心越烧越亮——开花的零点九秒是全技能的戏眼:花瓣张开的节奏就是引信的读秒,花开得越满,火憋得越足。漫焰段:花开到极致的一瞬,火浪从花心向外漫成一圈,圈内重创、圈外无伤——漫焰的判定只看爆炸那一瞬谁站在圈里,早一步出圈就是干看了一场花开。三段的核心是"花的生命周期即引信":播种、含苞、盛放、爆开,一朵花的开谢就是一次完整的攻击流程。
完整演示在这,默认自动循环:
fx-firelotus
二、幂尔框架实现:掷种弹道与花期调度
火种是一段短抛物线,花是一个带 bloomed 开花标记的花期状态:
local FireLotus = {}
local BLOOM, BURN_DMG = 0.9, 95
local seed, lotus = nil, nil
function SL:CastLotus(caster, target)
SL:PlayActorAct(caster, "cast")
seed = { sx = SL:GetValue("actorX", caster) + 22,
sy = SL:GetValue("actorY", caster) - 58,
tx = SL:GetValue("actorX", target),
ty = SL:GetValue("actorY", target) - 20, t = 0 }
SL:ScheduleRepeat(0.016, function()
if seed then
seed.t = seed.t + 0.016
local k = math.min(1, seed.t / 0.5)
SL:SetSeedPos(seed.sx + (seed.tx - seed.sx) * k,
seed.sy - math.sin(k * math.pi) * 60 + (seed.ty - seed.sy) * k)
if k >= 1 then
lotus = { t = 0 }
seed = nil
end
elseif lotus then
lotus.t = lotus.t + 0.016
SL:DrawLotus(lotus.x, math.min(1, lotus.t / BLOOM))
if lotus.t >= BLOOM and not lotus.bloomed then
lotus.bloomed = true
SL:PlayBurst(lotus.x, GROUND - 16, "lotus_burst", 26)
SL:FlashScreen("#fb7185", 0.1)
SL:ShakeCamera(7, 0.3)
if math.abs(SL:GetValue("actorX", target) - lotus.x) < 64 then
SL:HitActor(target, BURN_DMG)
SL:ApplyDebuff(target, "burn", 2.4)
SL:ShowTipAbove(target, "-" .. BURN_DMG .. " 花爆")
end
end
if lotus.t >= 1.6 then
lotus = nil
SL:CancelRepeat()
end
end
end)
end
return FireLotus
掷种零点五秒、开花零点九秒、花存续一点六秒——花期的三段时长就是这门技能的全部节奏,调参调的全是花语。
三、花瓣的画法与漫焰的圈
火莲的画法走"开"字:四瓣椭圆花瓣绕花心旋转展开、花心一粒金核越烧越亮、花瓣张开的旋转自带一分妖冶——火莲区别于火圈的脸就在花瓣上:圈是几何、花是生命。花瓣的颜色从内到外由金转红,张开时花瓣边缘先亮——光从花心往外走,开花有了方向。漫焰的圈不用细描:花开到极致的同一帧,一圈火浪从花心炸开、短促而圆——爆炸的圈是花瓣的续集,花有多大圈就多大,观感连续。余焰的二点四秒烧用三口"-6 灼"小字慢慢念——爆炸是大账、余焰是小账,两页账分色分号。狼怪的反应加一帧戏:花瓣张开时它本能地后退半步——野兽怕火,这半步的后退让开花的压迫感长在了怪身上。
四、延迟开花的定价与花的边界
延迟开花型的定价绕不开"读秒博弈"四个字:零点九秒的花期意味着玩家要预判九百毫秒后它站在哪——掐折返点的老手艺又一次通用。三条花的边界:其一,花不追人——种在哪开在哪,火莲落地的坐标是它一生的坐标;其二,圈内全吃、圈外全免——漫焰的判定只有一次、只有一瞬,爆炸过后花瓣散尽不留火海,开完就谢是花的规矩;其三,余焰只烫圈内客——二点四秒的灼烧只挂在被漫焰结账的目标身上,圈外的人隔岸观火。与爆裂火焰(火球砸地亮圈半秒炸)对照着看,同为"落地延迟AOE":爆裂是"把火扔过去",火莲是"让花在那儿开"——前者的戏在飞行,后者的戏在盛开,延迟爆炸的一个门派里长出了两种完全不同的美学。掷种有弧、开花有节、漫焰有圈、余焰有账——四件凑齐,火莲绽放才开得出"花开一瞬火漫一圈"。
五、花语的调度学:零点九秒怎么读秒
花瓣张开的零点九秒是全技能的心跳,这九百毫秒里的调度值得单独记。花瓣四片不是同时张——顺时针次第展开,每片错开零点一秒——次第开的花才有"活物"感,四片齐开的是折纸。花心的亮度与张开角度同步走:瓣开一半灯半亮、瓣全开灯全亮——光随花开,玩家盯花心就知道离爆炸还有多远。地面要先给"要出事"的暗示:火种钻地的位置留一圈微光缓缓扩张,光圈就是未来的爆炸圈——圈先画好、花后盛开、最后火漫到圈的边缘,三步是同一个半径的三次确认,玩家对"圈内圈外"的判断零歧义。声音的层次跟着花期走:落地一声闷响、开花一声细碎的酥响、爆开一声轰——三声三个量级,最后一声最大。余焰二点四秒的灼烧小字也要有花语的延续:灼字用粉色不用大红——花瓣的粉延续到余焰里,爆炸的橙红留给漫焰那一瞬,一团火里分出两代色,观众自然读出"主爆"与"余温"的差别。花的开谢是自然界最熟的节奏,把它借给AOE引信,玩家的紧张就有了熟悉的形状。
最后补一句给做花系特效的小伙伴:花瓣旋转的速度要随张开的进度加速——先慢后快,花开才有“憋不住了”的势头;匀速张开的花像教科书画图,加速张开的才像真的要炸。
再补一句给爆炸圈的颜色组:漫焰那一圈用粉橙双层——内层粉是花瓣的延续、外层橙是火的正色,圈的爆炸感与花的开放感在颜色上各占一半,花与火才算真的合体。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版埋了个越用越错的隐蔽报错:长按的计时不在抬手时清零——第一次长按松手后,秒表没归零,第二次轻轻一点直接被…
【语法算法】 接着抛坑:淡入没播完又来一个淡出,会怎样?答不好的界面都会出事——同一个面板的透明度被两个渐变同时抢,一个往上…
【语法算法】 上一版留了排"齐步走"的图标的隐蔽报错:一排波浪排布的图标同起同落——设计稿上是此起彼伏的波浪,实机上整排图标…
【语法算法】 先抛一个坑:按钮太小点不中,为什么不做大热区?界面上那个二十像素的小圆钮,玩家戳三次中一次——把按钮画大又会破…
【语法算法】 vel=vel math.pow(0.01,dt) ——先拆这一行。击退的全部手感都在这一行的衰减里:初速三百…
【语法算法】 上个月一场闪了全屏的事故成了组里的教材:受击闪白上线第一天,玩家一挨打整个界面白一遍——血条、按钮、聊天框全泡…