CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
进阶实战游戏功能996引擎

幽冥鬼火:三盏鬼火绕着它吸魂

2026-09-30 02:55 作者:996 技术组 996引擎Lua教程传奇脚本进阶实战游戏功能996引擎

【游戏功能】

火把怪围住了,怪却不跑?幽冥鬼火最反常识的就是这一点:它不是追着怪咬的火,是以怪为圆心绕着转的火——怪挪步,圈心跟着挪,火永远在它身边漂。今天拆幽冥鬼火,看"环绕体"这个形状怎么把持续伤害演出成一场招魂。

一、点灯、绕圈、吸魂三段

幽冥鬼火的循环三段。点灯段:道士掐诀,三盏鬼火依次从指尖飘出,绕着狼怪脚下转起一圈淡紫的光——三盏错开一百二十度入场,先来后到看得清。绕圈段:鬼火以椭圆轨道绕狼怪胸口高度漂移,转速恒定、间距均分——环绕的关键是"心随怪走":圈心每帧向怪的位置收敛,怪走火跟,怪停火绕。吸魂段:每盏火掠过胸口附近时吸走一口血,紫色小字带"吸魂"二字冒出——三盏火轮班,吸魂的节拍比单火密三倍,但每一口都小。三段的核心是"环绕即持续":它不追求任何一下的重,只追求"总有一下在路上"的压迫感。

完整演示在这,默认自动循环:

demo
 fx-wispdrain

二、幂尔框架实现:轨道参数与圈心跟随

鬼火是一组带相位差的轨道坐标,圈心做低通跟随:

lua
local WispDrain = {}
local ORBITS, RADIUS, LIFE = 3, 52, 6.0
local TICK = 1.2

local wisps = nil

function SL:CastWisps(caster, target)
    SL:PlayActorAct(caster, "cast")
    wisps = { cx = SL:GetValue("actorX", target), t = 0, acc = 0 }
    for i = 1, ORBITS do
        local ph = (i - 1) / ORBITS * math.pi * 2
        SL:SpawnOrbiter("ghost_fire", ph)
    end
    SL:ScheduleRepeat(0.016, function()
        if not wisps then return end
        wisps.t = wisps.t + 0.016
        wisps.cx = wisps.cx + (SL:GetValue("actorX", target) - wisps.cx) * 0.032
        for i = 1, ORBITS do
            local a = wisps.t * 2.1 + (i - 1) / ORBITS * math.pi * 2
            local ox = wisps.cx + math.cos(a) * RADIUS
            local oy = SL:GetValue("actorY", target) - 56 + math.sin(a) * 26
            SL:MoveOrbiter(i, ox, oy)
        end
        wisps.acc = wisps.acc + 0.016
        if wisps.acc >= TICK then
            wisps.acc = wisps.acc - TICK
            SL:HitActor(target, 6)
            SL:ShowTipAbove(target, "-6 吸魂", "#c9a8f5")
        end
        if wisps.t >= LIFE then
            wisps = nil
            SL:ClearOrbiters()
        end
    end)
end

return WispDrain

圈心跟随用的是最温和的一档收敛(每帧百分之三点二)——跟得慢,鬼火才有"飘"的味道;跟得太紧,环绕就变成了吸附。吸魂走独立的节拍器,与轨道转速解耦:三盏火轮到谁只是视觉的事,掉血按秒表走。

三、鬼火的画法与"飘"的分寸

鬼火的本体是一团径向渐变:亮紫的芯、中段过渡到透明——没有轮廓的火才是"魂火",描了边的圆就成灯笼了。透明度以每秒九次的频率轻颤,三盏的颤动相位错开——同颤像灯串,错颤才像三缕各自不安的魂。轨道压扁成椭圆(纵横比一半),鬼火转到"远处"时略微调小调淡——这一层伪透视让环绕有了前后纵深,平面转圈立刻变成立体盘旋。吸魂那一下的演出要"收":血从狼怪胸口冒出两三粒紫色光点向上飘散——被吸走的魂向上走,这是招魂题材的视觉常识,向下掉就成放血了。

四、环绕体的定位账

鬼火在伤害体系里是"细水长流"的一档:六秒总伤三十六,还不如一次普攻——它的真实产出是压制:怪在火圈里不敢久站,走位被圈牵着走。这份定位决定两条边界:其一,环绕体不吃暴击——暴击的爆发感与细水长流的美学互斥,鬼火暴击等于把招魂演成放炮;其二,圈心跟随有粘滞——怪用位移技能猛冲出圈,火要晚半秒才追上,这半秒就是走位的意义,环绕体的威胁必须"逃得掉但逃得难受"。与放血对照着看更清楚:同样是小额慢扣,放血贴在伤口上,鬼火飘在轨道上——一个惩罚"挨过的刀",一个惩罚"站的位"。持续伤害的两条路线在演出上分了家,玩家的选择才有味道。点灯、绕圈、吸魂三段,圈心缓跟、颤光错拍、魂向上走,四件凑齐,幽冥鬼火才烧得不像火,像一场收魂的仪式。

五、环绕的节奏学:转速、节拍与怪的选择

鬼火真正值得抠的是两根时间轴的配比。轨道转速每秒两圈上下是甜点:转快了三盏火糊成一圈光环,吸魂的"轮班感"消失;转慢了鬼火像散步,压迫感散光。吸魂节拍一点二秒一口,刻意与轨道半圈错开——观众看到的每一次掉血都能指认出"是哪盏火掠过的",因果对得上号,持续伤害才读得懂。而这套节奏真正的产品是选择压力:怪站在圈里每一点二秒掉六点,走出去火圈跟着挪——它发现逃不掉之后会转而加速进攻,试图在火耗死自己之前先耗死人。演示里狼怪被火圈罩住后的巡逻频率明显变快,就是这个选择的演出。道士玩家由此读出鬼火的第二用法:不是等它烧,是逼它动——用火圈把怪逼出巡逻路线、逼进队友的刀位,伤害是利息,驱赶才是本金。最后留一条工程省心账:三盏鬼火共用一个圈心、一份节拍器,轨道相位只是显示层的参数——圈心收敛、计时扣血这些逻辑只存一份,改节奏时改一处全盘生效,环绕体系才养得起。

这轮写下来还有一句想留的话:这类技能最容易在迭代里走形——改一次数值、调一次粒子,最初的那个"为什么好看"就慢慢丢了。把每个技能最核心的那一句话钉在模块头部注释里,往后任何一次改动,先问一句还符不符合那句话,再动手。表现层的所有分歧,最后都要回到那句话上对表。
招魂的仪式感说到底就是分寸感的别名——火小一分是萤,大一分是灾,烧在分寸里的那点紫光,才配叫鬼火。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

进阶实战游戏功能

焚天气焰:敢贴身就让它也烧起来

【游戏功能】 怪打人一下,自己为什么要烧两秒?焚天气焰的逻辑就是这么横:气焰缠身的战士像一团行走的火——狼怪的爪子伸过来,挨…

2026-09-30 02:55 996 技术组
进阶实战游戏功能

大地震击:震波从脚下追到它跟前

【游戏功能】 震波明明看不见,怎么知道它追到哪了?大地震击的答案是把波画出来:双拳砸地,一道紫色的波头贴着地面隆起,以稳定的…

2026-09-30 02:55 996 技术组
进阶实战游戏功能

圣光弹:一颗圣光弹穿胸而过

【游戏功能】 法术弹还能"穿"?圣光弹出膛后走一条死直线,命中狼怪胸口炸开一圈金光,弹体却不消停——它继续往前,从狼怪身子里…

2026-09-30 02:55 996 技术组
进阶实战游戏功能

沙暴:一场沙暴迷了它的眼

【游戏功能】 沙暴的全部机制就这一行:一场覆盖全场的天气。它不减防、不掉血、不禁技能,只干一件事——往狼怪眼里灌沙子,让它的…

2026-09-30 02:55 996 技术组
进阶实战游戏功能

陨石术:一颗陨石从天而降砸出火坑

【游戏功能】 陨石明明砸空了,为什么地面还在烧人?很多玩家第一次见陨石术都有这个疑问:落点偏差半步,直击伤害一分没拿,人却站…

2026-09-30 02:55 996 技术组
进阶实战游戏功能

幽冥鬼火:三盏鬼火绕着它吸魂

【游戏功能】 火把怪围住了,怪却不跑?幽冥鬼火最反常识的就是这一点:它不是追着怪咬的火,是以怪为圆心绕着转的火——怪挪步,圈…

2026-09-30 02:55 996 技术组