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

天女散花:一把花瓣撒成扇面

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

【游戏功能】

上周排位局有人把天女散花打成了"单发飞刀"——五瓣花瓣出手,狼怪稳稳站扇心,他却只吃到一瓣的伤害。回放一看,他的角色面朝向偏了十度,整个扇面跟着偏,四瓣全擦着狼怪身子飞过去。这个事故说明一件事:扇面散射的伤害不是数值决定的,是角度决定的。今天拆天女散花,看"扇"这个形状怎么从朝向里长出来。

一、撒瓣、飞行、结账三段

天女散花的循环三段。撒瓣段:角色一挥手,五片花瓣沿扇面同时出手——五瓣的射角是固定的一组:正中、左右各偏十度、左右各偏二十度,扇面的开合角度写死在配置里,谁出手都一样。飞行段:五瓣各走各的直线,互不干扰——扇面的形状只在出手瞬间由朝向决定,出手之后每片花瓣就是一枚普通的直线弹,没有追踪没有拐弯。结账段:花瓣擦过狼怪身位的记一次命中,命中数结算伤害——站扇心的吃满五瓣,站扇边只擦一两片。三段的核心是"一次成形":扇面在撒出的瞬间定型,角度即伤害——这和追踪弹的"锁定即伤害"是两个世界,天女散花惩罚站位偏差,奖励出手时机。

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

demo
 fx-fanpetals

二、幂尔框架实现:射角表与命中计数

扇面就是一张射角表,命中靠逐瓣计数:

lua
local FanPetals = {}
local ANGS  = { -0.34, -0.17, 0, 0.17, 0.34 }   -- 五瓣射角(弧度)
local PETAL_DMG = 22

function SL:CastFan(caster, target)
    SL:PlayActorAct(caster, "attack")
    local facing = SL:GetValue("facing", caster)   -- 角色当前朝向
    local hits = 0
    for i, a in ipairs(ANGS) do
        local ang = facing + a
        SL:FireProjectile("petal", caster, ang, 300, function(px, py)
            if SL:InHitBox(px, py, target) then
                hits = hits + 1
                SL:PlayBurst(px, py, "petal_pop", 4)
            end
        end)
    end
    SL:ScheduleOnce(function()
        if hits > 0 then
            SL:HitActor(target, hits * PETAL_DMG)
            SL:ShowTipAbove(target, "-" .. (hits * PETAL_DMG)
                .. (hits == 5 and " 吃满!" or (" " .. hits .. "瓣")))
        end
    end, 0.9)
end

return FanPetals

两个易错点钉在这:其一,facing 取一次就够——五瓣共享同一个朝向基准,循环里再取朝向,中途的角色转向会把扇面拧歪;其二,结账用延迟一次汇总而不是逐瓣结算——逐瓣飘五个小数字不如一个汇总数字带"吃满"来得清爽。

三、扇面三参数:开角、瓣数、速差

扇面的手感全在三个参数的配比里。开角:总开角四十度上下是甜点——再宽就成无差别轰炸,站位失去意义;再窄就退化成高散布单体弹,"扇"名不副实。瓣数:五瓣是信息量的上限——玩家扫一眼能数清扇面里有几道缝,七瓣以上扇面糊成一团,站位博弈变成抽卡。速差:相邻瓣速错开一成——五瓣同时出手但不同时到达,扇面在飞行中微微"张开",这让同样四十度的扇形看着比匀速的大一圈,纯视觉的便宜。花瓣本体的画法走"轻"字诀:椭圆小瓣、加法混合的粉光、飞行中自旋——花瓣是全场最轻的弹体,越轻,扇面的"撒"字越成立。命中反馈按瓣数分档:一瓣灰字、三瓣粉字、五瓣大字加粉色冲击环——玩家从数字的颜色和个头直接读出"这一把撒得值不值"。

四、朝向事故的根治与扇的战术面

开头那起"单发飞刀"事故,根因是朝向读取时机错了——那位开发在花瓣出手的循环里逐瓣取朝向,角色攻击动作中途的自转把后四瓣带偏。根治就一条:扇面类技能的朝向在出手帧锁定一次,写进框架的使用规约里。战术面上,扇的乐趣在"等狼怪对正":巡逻折返的那半秒,狼怪的行进方向恰好对准扇心,此时撒瓣五瓣全中——演示的自动演武就掐这个时机出手,玩家看两轮就能学会"等它转头"。再往上一层是和推退技的配合:气功波把狼怪推向扇心,推的动作本身就在替玩家校准角度——两个技能的参数不用为配合改一个字,扇面与推力的几何关系天然咬合。射角表、单次朝向、速差张扇、按瓣分档——四件凑齐,天女散花才是"一把撒出去的刀雨",而不是五发齐射的机枪。

五、花瓣落地的余韵

撒完之后的半秒也有戏可做。擦身而过的花瓣不打断、不消失,继续飞到扇面尽头才散——擦伤的"擦"字要飞完全程才算数,半路消失的擦伤像判错了的球。落地的花瓣在地面留两三片粉点,一秒淡去——"撒"是有残渣的,残渣让扇面留在玩家的记忆里比冲击环更久。音效的层次跟着瓣数走:出手一声轻响、每片命中一声"叮"、五瓣全中追加一声风铃式的尾音——尾音是"吃满"的听觉签名,老玩家闭着眼听尾音就知道这一把值不值。还有一处在演示里能看出来的小选择:狼怪被擦中后不停顿——单瓣擦伤不给受击僵直,只有吃满五瓣才顿一帧——擦伤是"蹭",满中是"打",两档反馈的力度必须拉开,否则扇边与扇心在手感上没了区别。最后把话收回工程侧:花瓣的物理是全场最简单的——直线、匀速、无重力、无碰撞体积,只有命中框一查——但把最简单的弹体配上最讲究的出手几何,就是"散射"类技能的全部深度。简单弹体配复杂弹道,比复杂弹体配简单弹道便宜十倍,好看二十倍。

作者履历与出处

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

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

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

LATEST ARTICLES

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

进阶实战游戏功能

夺舍:钻进它身子让它打自己

【游戏功能】 它的爪子明明挥向了你,怎么落在自己脸上?夺舍的答案邪门到家:道士的魂钻进了狼怪的身子——占据三秒,这三秒里它每…

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

水墙:一面水墙推它回原路

【游戏功能】 墙又不追人,怪为什么次次撞?水墙的定位写在物理里:它立在路中央六秒,是一块"会推人的地形"——狼怪巡逻的弧线扫…

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

双刀交叉斩:左右开弓刀不停

【游戏功能】 左手五刀右手五刀,怎么就数得清是双刀?双刀交叉斩的答案在弧线上:左刀的弧向右扫,右刀的弧向左扫,两把刀的弧线在…

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

咒怨娃娃:扎它替身它替它疼

【游戏功能】 隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草…

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

雷云:一朵乌云跟它到哪电到哪

【游戏功能】 雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶…

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

火焰冲刺:一路冲过去一路烧

【游戏功能】 跑赢了的怪,怎么反倒挨了烧?火焰冲刺的账目反直觉就在这:冲刺是位移,火径是遗产——人冲过去了,路留在原地烧三秒…

2026-09-30 03:54 996 技术组