【游戏功能】
SL:SpawnCloud("thunder", target, 6.0) -- 乌云升顶跟随
雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶"这个位置关系,走哪儿跟哪儿。今天拆雷云,看"跟随系持续伤害"怎么把一朵云演成头顶的债主。
一、升云、跟顶、点雷三段
雷云的循环三段。升云段:法师一指天,一朵五瓣的乌云在狼怪头顶凝聚成型、微微沉浮——云的入场从"无"到"悬",凝聚的那两秒它还不下雨,雷前有酝酿。跟顶段:云以慢半拍的速率跟随目标头顶——跟得慢是雷云的性格:它不精确追踪,它"尾随",怪加速它才加速,怪折返它慢悠悠掉头——尾随的松弛感让观众始终觉得"这朵云有点笨,但甩不掉"。点雷段:每一点二秒,一道小雷从云底直落头顶,小字小闪小额——点雷的规格刻意压低:单发十四、闪电只有云底到头顶的一小截,雷云的威胁是频率不是单发。三段的核心是"位置关系":伤害的判定锚在"云与头的对齐"上,云跟着人走,雨就下到人走到的每一处。
完整演示在这,默认自动循环:
fx-thundercloud
二、幂尔框架实现:跟随插值与点雷节拍
云是一段缓动跟随加一个独立节拍器:
local ThunderCloud = {}
local LIFE, ZAP = 6.0, 1.2
local cloud = nil
function SL:CastCloud(caster, target)
SL:PlayActorAct(caster, "cast")
cloud = { t = 0, x = SL:GetValue("actorX", target), acc = ZAP }
SL:ScheduleRepeat(0.016, function()
if not cloud then return end
cloud.t = cloud.t + 0.016
cloud.x = cloud.x + (SL:GetValue("actorX", target) - cloud.x) * 0.022
SL:DrawCloud(cloud.x, GROUND - 150 + math.sin(cloud.t * 2) * 4)
cloud.acc = cloud.acc + 0.016
if cloud.acc >= ZAP then
cloud.acc = cloud.acc - ZAP
SL:BoltDown(cloud.x)
SL:HitActor(target, 14)
SL:ShowTipAbove(target, "-14")
end
if cloud.t >= LIFE then
cloud = nil
SL:ClearCloud()
SL:CancelRepeat()
end
end)
end
return ThunderCloud
跟随系数零点零二二是全场最钝的追踪——每帧只收敛百分之二点二,云的位移永远落后目标半口气的距离,"尾随感"就是这个数字给的。点雷节拍独立于跟随,云飘它的、雷下雷的,两套时钟互不干扰。
三、云的画法与点雷的规格
乌云五瓣拼成:深灰五团错落重叠、底缘一圈淡蓝的电晕低频明灭——云的底缘就是雷的仓库,电晕亮一次就是上膛一次。云的沉浮周期两秒上下浮动四像素——云要"漂",钉死的乌云像贴图。点雷的闪电只画云底到头顶的一小截折线,两三层抖动、亮蓝细芯——全长的天雷雷霆万钧画过很多次了,雷云的小雷必须"小":短、细、快,规模感与频率成反比。落雷的那一小格闪屏要压到半成——闪屏是节拍器,每次都重闪会把玩家的眼睛闪瞎。狼怪的反应也有戏:头顶挨雷时会缩一下脖子、加速挪两步——被云盯上的猎物总想跑出雨区,而云慢半拍的跟随正好演出"追不上也甩不掉"的黏。
四、跟随系的边界:云下不挑人
跟随类持续技能的三条边界。其一,只跟锚定目标——云放出后认死一个人,目标死亡云就地消散,不转移不飘向旁人;其二,跟随有黏滞——本篇用钝追踪,任何时候跟随系数高于零点一,云就变成了追踪弹,尾随的"笨"是它的护城河;其三,天气不分敌我——雷云落雷的判定只看"云底下是谁",法师自己钻进云同样挨雷,天气的公平高于术法。与五雷轰顶(套环绞杀)、引雷桩(固定引雷)摆成一排,雷电系的三个席位分工清楚:桩是等人来、环是锁着劈、云是跟着下——同一种元素的三种时态。升云有酝酿、跟随有钝感、点雷有节拍、天气不挑人——四件凑齐,雷云才下得出"躲不出雨"的黏。
五、钝追踪的玄学:那半口气为什么重要
跟随系数零点零二是全技能最不起眼、也最要命的一个数字,值得单独念叨。调到零点二,云跟得太紧,狼怪走到哪云贴到哪——观感从"尾随"变成"吸附",压迫变成了缠扰,玩家看着烦而不是怕;调到零点零零五,云几乎不动,怪走出两步就脱离雨区,持续伤害名存实亡。零点零二的甜点区正好让云与怪保持"永远差半口气"的距离——半口气的差距就是持续压迫的物理表达:它永远想跑、永远甩不干净、永远在淋雨。这个数字同样决定了演示的观赏节奏:狼怪的巡逻摆幅七十像素、云的跟随延迟半秒,两者相除,云永远在画一条比怪慢半拍的弧线——观众看这条弧线就知道什么叫"甩不掉"。云的消散也有个可圈可点的细节:寿命最后半秒云身开始变薄、雨点稀疏、最后一道雷落完才散——天气的谢幕跟来的时候一样成体系,这是沙暴那篇定下的天气层规矩,雷云是第二条执行的天气。最后记一笔雷系家谱的收束:引雷桩等人来、五雷轰顶锁着劈、雷云跟着下——同一场雨,三种下法,元素的演绎空间远没有到头。
补一句云的美术备注:乌云的灰度随剩余寿命加深再变薄——起云时厚、散云时薄,云的胖瘦就是倒计时,这条视觉语法与玄冰刺的冰棱高度、蜂群的翅膀密度一脉相承:持续系技能的寿命,全都写在主体的身材上。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 它的爪子明明挥向了你,怎么落在自己脸上?夺舍的答案邪门到家:道士的魂钻进了狼怪的身子——占据三秒,这三秒里它每…
【游戏功能】 墙又不追人,怪为什么次次撞?水墙的定位写在物理里:它立在路中央六秒,是一块"会推人的地形"——狼怪巡逻的弧线扫…
【游戏功能】 左手五刀右手五刀,怎么就数得清是双刀?双刀交叉斩的答案在弧线上:左刀的弧向右扫,右刀的弧向左扫,两把刀的弧线在…
【游戏功能】 隔着半个屏幕扎草人,狼怪为什么跟着一抽一抽?咒怨娃娃的逻辑古老而瘆人:草人与目标结咒之后,草人就是它——针扎草…
【游戏功能】 雷云的全部机制就这一行:一朵乌云升到目标头顶,慢半拍地跟着挪,每一点二秒掉一道小雷。云不追人——它认的是"头顶…
【游戏功能】 跑赢了的怪,怎么反倒挨了烧?火焰冲刺的账目反直觉就在这:冲刺是位移,火径是遗产——人冲过去了,路留在原地烧三秒…