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

幽冥鬼影:影子学你一步炸一步

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

【游戏功能】

测试群里飘过一条哭笑不得的反馈:"影分身技能看着像坏了——影子在和本体跳双人舞。"查了半天没坏:影子在模仿本体的动作,但位移没做镜像,动作同向、移动反向,看起来就像两个灵魂在抢一个身体。今天拆幽冥鬼影,重点就讲"镜像"两个字怎么做才不像双人舞。

一、浮现、模仿、反噬三段镜

鬼影的三段都围着"镜像"转。浮现段:紫影从狼怪身侧的暗处渗出来,透明度从零爬到七成半,出场是"渗"不是"跳"——影子本来就是从本体上剥离的。模仿段:影子和狼怪做同一个动作序列,但横向位移完全反向——本体向左,影子向右,像照镜子。这个反向就是"镜"字的视觉证明,也是最容易做错的一段:动作镜像、位移也要镜像,只做一半就成了双人舞。反噬段:模仿时限一到,影子猛然转向扑向本体,扑到重合的瞬间炸开——影子的紫色全部还给本体,一圈紫环、一蓬碎晶、一个减速到爬的硬直。反噬是这技能的账面核心:模仿是表演,反噬才是伤害。

完整演示在这,默认自动循环,可调模仿时长:

demo
fx-shadowghost

二、幂尔框架实现:动作同步与位移镜像

影子的每帧状态从本体读取,位移取反:

lua
local ShadowGhost = {}
local KEY = { ALPHA = 0.75 }

local ghost = nil

function ShadowGhost.Summon(target, duration)
    ghost = {
        owner = target,
        off = -70,
        alpha = 0,
        born = SL:GetValue("engineTime")
    }
    SL:PlayFxAt("ghost_birth", SL:GetValue("actorX", target) - 70,
                                SL:GetValue("actorY", target))
    SL:Schedule(function(dt)
        if not ghost then SL:UnSchedule("ghostRun") return end
        local ox = SL:GetValue("actorX", target)
        local oy = SL:GetValue("actorY", target)
        -- 位移镜像: 影子始终在反侧
        local wantX = ox + ghost.off
        local gx = SL:GetValue("actorX", "ghost")
        SL:SetActorVelocity("ghost", (wantX - gx) * 6, 0)
        -- 动作帧同步: 直接读本体当前帧
        SL:SetActorAct("ghost", SL:GetValue("actorAct", target))
        SL:SetActorFrame("ghost", SL:GetValue("actorFrame", target))
        -- 透明度爬升
        ghost.alpha = math.min(KEY.ALPHA, ghost.alpha + dt * 2.5)
        SL:SetActorAlpha("ghost", math.floor(ghost.alpha * 255))
        -- 模仿时限: 反噬
        if SL:GetValue("engineTime") - ghost.born >= duration then
            ShadowGhost.Detonate(target)
        end
    end, 0.016, "ghostRun")
end

function ShadowGhost.Detonate(target)
    local ox = SL:GetValue("actorX", target)
    local oy = SL:GetValue("actorY", target)
    SL:PlayActorAct(target, "stuck")
    SL:PlayFxAt("ghost_burst", ox, oy)
    SL:ScreenShake(0.3, 5)
    SL:DeductHp(target, 38)
    SL:ShowHitNum(target, 38, "ghost")
    SL:PlayFxAt("ghost_fade", SL:GetValue("actorX", "ghost"),
                              SL:GetValue("actorY", "ghost"))
    SL:RemoveActor("ghost")
    ghost = nil
end

return ShadowGhost

影子读本体的动作帧而不是自己播动画——同步误差为零,这才是真镜像。

三、反侧贴靠与反噬预警

影子站位的反侧贴靠有个细节:本体移动时影子要维持距离七十像素的镜像位,逼近速度用弹簧系数六——影子像被无形的杆连着,本体走它就走,本体停它就停。反噬前的预警也是must:模仿还剩半秒时,影子的紫色开始加深、身形开始向本体倾斜——给观众一个"要炸了"的预期,反噬落地才不突兀。反噬伤害和模仿时长挂钩也是可选深度:模仿越久反噬越痛,但影子存活越久玩家越容易忘了它的存在——把风险藏在观众的记性里,这招在演示里值得试。最后,影子死亡态不做:影子没有血条,它只有时限,时限就是它的命。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

吸力:它一吸气,人全往嘴边飞

【游戏功能】 零点一秒之内,血条无端少了一截——没有刀光没有红字,人却已经站在它嘴边了。吸力的机制就是这场无声的绑架:它吸气…

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

眼线:一道红光扫过来,脚步跟着光的背后走

【游戏功能】 有块场地被玩家们称作"阅兵场":一尊石像立在正中,眼睛扫出的一道红光从场子这头滚到那头,碰着就烧——新手进场先…

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

雷印:被点名的跑远点,别炸了队友

【游戏功能】 seal.x = P.x ——一行把雷的落点锁在你此刻坐标的代码,写尽了雷印全部的凶险:被点名的三秒后,雷落在…

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

地波:贴地扫来的那一环,跳起来就躲

【游戏功能】 单子上写着一场三连摔:狼怪每跺一次地,玩家就摔一个跟头,三连摔摔出了真火气——直到有人教他一个字:跳。地波的机…

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

护主:小怪死光之前,它的皮是刀枪不入的

【游戏功能】 火力全开轰在主母身上,伤害数字却全是"免伤"的白字——多少人跟这道白打的罩子耗到弹尽粮绝,才有人喊一句:先杀小…

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

狂暴线:它血过三成就红了眼,先手为强

【游戏功能】 伤害统计里有条诡异的曲线:同一场仗,前半段每刀挨十五,后半段每刀挨三十——配置没人动过,狼怪却像换了个人。狂暴…

2026-09-30 20:26 996 技术组