【游戏功能】
一声唿哨,天上真的会掉一只鹰?神鹰俯冲的浪漫就在这:战士仰天长哨,一只金鹰从画面外盘旋而下,双爪直取狼怪天灵盖,抓完拔地而起冲回云里。今天拆神鹰俯冲,看"召唤兽突袭"怎么把一只鸟的三段飞行演成一场空袭。
一、召鹰、扑顶、拔起三段
神鹰俯冲的循环三段。召鹰段:唿哨一声,金鹰从画面右上角外的天空滑入——入场的起点在画外、高度在云上,"从天而降"四个字的第一课就是入场高度必须够高。扑顶段:鹰沿一条二次曲线俯冲而下,速度逐帧加快,双爪的目标是狼怪头顶——扑顶的判定点在头部:鹰是猛禽,抓的就是天灵盖,落点比任何地面技都高。拔起段:爪子触顶的一瞬,鹰爪收紧、振翅拔地而起,斜着冲回画外天空——抓完就走是鹰的骄傲:它不盘旋不逗留,得手即离场。三段的核心是"三段飞行":入场、扑击、离场各有各的曲线,一只鸟的威风全在飞行轨迹上。
完整演示在这,默认自动循环:
fx-eagleswoop
二、幂尔框架实现:三段相位与翅膀节拍
鹰是一段带相位的飞行体,翅膀是纯表现:
local EagleSwoop = {}
local DIVE, GRAB, RISE = 0.7, 0.35, 0.8
local eagle = nil
function SL:Whistle(caster, target)
SL:PlayActorAct(caster, "cast")
local tx = SL:GetValue("actorX", target)
local ty = SL:GetValue("actorY", target) - 92
eagle = { ph = "dive", t = 0, tx = tx, ty = ty,
x = tx + 150, y = -30 }
SL:ScheduleRepeat(0.016, function()
if not eagle then return end
eagle.t = eagle.t + 0.016
if eagle.ph == "dive" then
local k = math.min(1, eagle.t / DIVE)
eagle.x = eagle.tx + 150 - 150 * k
eagle.y = -30 + (eagle.ty + 30) * k * k -- 二次加速俯冲
if k >= 1 then
eagle.ph = "grab"; eagle.t = 0
SL:HitActor(target, 88)
SL:ShowTipAbove(target, "-88 鹰爪")
SL:PlayBurst(eagle.tx, eagle.ty, "claw_flash", 20)
end
elseif eagle.ph == "grab" then
eagle.y = eagle.ty - math.sin(eagle.t / GRAB * math.pi) * 10
if eagle.t >= GRAB then
eagle.ph = "rise"; eagle.t = 0
eagle.sx, eagle.sy = eagle.x, eagle.y
end
else
local k = math.min(1, eagle.t / RISE)
eagle.x = eagle.sx + 80 * k
eagle.y = eagle.sy - 260 * k
if k >= 1 then
eagle = nil
SL:CancelRepeat()
end
end
SL:DrawEagle(eagle and eagle.x or 0, eagle and eagle.y or 0)
end)
end
return EagleSwoop
俯冲用二次曲线加速(k 的平方),自由落体的重力感全在这一个平方上;拔起用匀速直线,干脆离场。两段曲线一急一缓,鹰的脾气就出来了。
三、鹰的画法与抓头的规格
金鹰的画法走"剪影加一点光":一对三角翅随时间上下扇、一枚圆头、一撮金尾——不画羽毛不画眼睛,剪影加翅膀的扇动频率就是一只活鹰。扇翅频率是鹰的生命:每秒十六次的高频抖翅,观众扫一眼就知道那是个活物;俯冲时翅膀收拢、拔起时翅膀展开——翅的收放与飞行的急缓同频,鸟的用力全写在翅膀上。抓头那一下的规格配"空袭"二字:白闪、六像素震屏、二十粒金屑从头顶炸开、八十八点大字——被从天上来的东西打了头,观感的分量必须比地面技重一档。狼怪的反应也有两帧戏:被抓的瞬间缩头、鹰走后抬头看天——它也在问"那是什么"。
四、召唤突袭的边界:鹰不落地
召唤兽突袭系的三条边界。其一,鹰不落地——全程悬空,不参与地面纠缠,召唤物来了就走,来了又走才配叫"突袭";其二,鹰不认第二目标——唿哨锁定的就是当下那只,飞行途中目标死亡则鹰拔起空手而归,召唤兽不换主;其三,冷却从鹰离场起算——鹰回天之后冷却才开始走,突袭的间隔是"整段飞行加冷却",突袭系的稀缺性靠这条撑住。与灵魂出窍(魂魄离体逛街)摆在一起,"空中单位"的两种画风分了家:出窍的魂是玩家自己的分身,慢悠悠地漂;神鹰是听唿哨的猛禽,疾风骤雨地来去。召鹰有声、三段有曲线、抓头有规格、三条边界锁死飞行——四件凑齐,一声唿哨才真唤得动天上的鹰。
五、鹰的演技课:一只鸟的三次呼吸
神鹰全程不出一声,它的演技全在翅膀与影子上。入场段的翅膀收得半拢——从高处滑下来的鹰是省力的,翅半张半收的滑翔姿态比拼命扇翅更像俯冲;扑顶段翅膀猛地展开减速——抓之前要刹住,翅膀的反向一抖就是"刹车",这个细节让俯冲有了重量;拔起段翅膀全幅狂扇——起身最费力,扇得最狠才对。三次翅膀的三种姿态,一只鸟的用力全写在翅上。影子是第二个演员:鹰过地面时投下一小片扫过的阴影,影子先到、鹰后到——阴影扫过狼怪头顶的那零点几秒,是"天上有东西"的预告,抓头那一下的突袭感反而更强。唿哨的音效也别省:一声上扬的哨音划过,观众耳朵先于眼睛知道鹰来了。最后是狼怪的两帧余韵:鹰走后它抬头盯天两秒——被从天上欺负过的怪会怕天,这两帧的抬头让空袭的威慑延续到技能结束之后。召唤兽突袭的所有演出成本都花在"飞"上,一只会飞的道具演活了,技能就活了。
补一句调参心得:俯冲的二次曲线里那个平方,是全技能最贵的一个字符——去掉平方,俯冲变滑梯;保留平方,才有从天上砸下来的狠劲。一个运算符决定一只鹰的气质,这类细节值得单独记进代码注释。
最后留一个彩蛋位:鹰抓空的那一次(目标刚好挪出爪距)可以演一个“收势不及”的踉跄——神鹰也有失手的时候,失手一次的鹰比百发百中的鹰更让人惦记下一声唿哨。
再钉一处数字的账:八十八点抓头伤对比地面技的单发,恰好卡在“空袭税”的位置——从天上来的每一分压迫感,都用伤害表上让出来的一小块换,这个换算关系是空袭系定价的底表。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版埋了个越用越错的隐蔽报错:长按的计时不在抬手时清零——第一次长按松手后,秒表没归零,第二次轻轻一点直接被…
【语法算法】 接着抛坑:淡入没播完又来一个淡出,会怎样?答不好的界面都会出事——同一个面板的透明度被两个渐变同时抢,一个往上…
【语法算法】 上一版留了排"齐步走"的图标的隐蔽报错:一排波浪排布的图标同起同落——设计稿上是此起彼伏的波浪,实机上整排图标…
【语法算法】 先抛一个坑:按钮太小点不中,为什么不做大热区?界面上那个二十像素的小圆钮,玩家戳三次中一次——把按钮画大又会破…
【语法算法】 vel=vel math.pow(0.01,dt) ——先拆这一行。击退的全部手感都在这一行的衰减里:初速三百…
【语法算法】 上个月一场闪了全屏的事故成了组里的教材:受击闪白上线第一天,玩家一挨打整个界面白一遍——血条、按钮、聊天框全泡…