【游戏功能】
一把短枪凭什么把一头狼掀上天?挑飞的答案不在力气里,在它上天之后的那两秒:离了地的爪子抓不着人,空中的狼怪只会睁着眼睛看自己挨刀——挑飞加两刀,落地再补一刀,三笔账全是白捡。今天拆挑飞,看"浮空连段"怎么把一次普通的挑击演成两秒钟的独角戏。
一、掀天、空账、落地三段
挑飞的循环三段。掀天段:枪杆贴地一挑,狼怪整只离地弹上半空,脚下留一圈炸开的尘土——掀天的力度全在起飞那一瞬:速度要快到残影跟不上,慢悠悠飘上去的是气球不是被挑飞的。空账段:它在天上,你的刀在地——不,你的刀跟着上去了:空中的两刀每一刀都顶着"空中"的小标,三十二点一刀结结实实,它连躲的资格都没有——空账段的爽不在这两刀多疼,在"它毫无办法"这四个字。落地段:背朝天砸回地面,尘土一圈、半秒发懵——懵的半秒它不追不扑,玩家想补刀补刀、想走位走位,落地不是结束,是下一轮节奏的起手。三段的核心是"离地即免战":浮空不是伤害技能,是把怪的回合整个没收的两秒钟。
完整演示在这,默认自动循环:
fx-tossup
二、幂尔框架实现:起跳、悬停、砸落是一个循环
浮空是一段自管的抛物线,落地是一笔迟到的账:
local TossUp = {}
local TOSS_DMG = 30
local AIR_DMG = 32
local STUN_LAND = 0.6
local wolf = { air = false, vy = 0, juggles = 0 }
function SL:CastToss(caster, target)
SL:PlayActorAct(caster, "attack")
SL:ScheduleDelay(0.2, function()
wolf.air = true
wolf.vy = -430
wolf.juggles = 0
SL:HitActor(target, TOSS_DMG)
SL:ShowTipAbove(target, "-" .. TOSS_DMG .. " 挑")
SL:RingAt(target, 26, "#a5d6ff")
SL:ScheduleRepeat(0.016, function()
if not wolf.air then return SL:CancelRepeat() end
wolf.vy = wolf.vy + 900 * 0.016 -- 重力自己加回来
local dy = wolf.vy * 0.016
SL:MoveActor(target, 0, dy) -- 只动高度不动地面
if wolf.vy < 0 and wolf.juggles < 2 then
wolf.juggles = wolf.juggles + 1
SL:HitActor(target, AIR_DMG) -- 空中的两刀白拿
SL:ShowTipAbove(target, "-" .. AIR_DMG .. " 空中")
end
if SL:GetValue("actorY", target) >= SL:GetValue("groundY", target) then
wolf.air = false
SL:Stun(target, STUN_LAND) -- 落地发懵半秒
SL:ShakeCamera(4, 0.2)
end
end)
end)
SL:Cooldown("tossup", 5.0)
end
return TossUp
重力要自己加回来是全段的暗坑:只给一个向上的初速不加重力,狼就飞出了天际线——挑飞段的循环里,vy 每帧都在长,落到地面判定线的那一帧才是演出的句号。
三、浮空的演出规格
起飞一瞬三层:脚下尘圈、起飞残影、一声脆啸——尘圈画在地面告诉观众"这里曾是它的位置",残影越短越显快。空中的狼怪头顶三粒小星慢慢转——星星是"懵"的通用语,不用一句说明书。空中两刀各带"空中"小标,数字用青白色不用红——空账是白捡的便宜,红字留给真刀真枪。落地的分量要够:四像素震屏加一圈尘土加背朝天的姿势——落地的狼怪姿势改不了,尘土和震屏替它把"摔"字演足。发懵的半秒里它的头顶比空中多一道细线血槽——半秒的窗口看得见,玩家才敢贴上去补刀。
四、定价与三条浮空规
浮空系的定价一句话:掀天三十、空账六十四、落地懵半秒——一轮挑飞的账一百二十多点,可它真正值钱的是那两秒的免战。三条浮空规:其一,重型的挑不动——体重超标的怪挑飞变踉跄,挑飞挑的是轻的,掀桌子的力气要有边界;其二,浮空不吃控制——它在天上时冻不住晕不着,控制链到空中自动断,免战免的是双方;其三,挑飞不可连——落地发懵的半秒里再挑无效,节奏是递给你的,不是让你无限连的。与千斤坠对照着看:同是天地之间做文章,千斤坠是把根扎进地里谁也推不动,挑飞是把对方拔出地面谁也够不着——一个重得定,一个轻得飘,位移系的两个极端在"谁的脚离地"上分了家。
五、节奏系的价值学:白给的两秒怎么用
挑飞教玩家的第一课是:伤害不是唯一的收益,"它没法动"本身就是一种收益——两秒的免战里换血、喝水、读条、绕后,每个人的用法都不一样,浮空窗口是全队各取所需的一个口袋。对独行者,两秒够打两刀;对观战者,狼怪在半空挨刀的画面本身就是全场的记分牌——地上打十刀不如天上挨两刀上镜。工程收尾记一笔:空中的受击点要跟着高度实时走——飘字和判定都锚在"此刻的高度"上,锚在地表的空中挨刀,数字会从地里冒出来。最后留给数值组的一句话:空账六十四点对普攻二十六的两倍半,看着吓人,实际是拿五秒冷却换的——浮空系的账要算进那两秒的免战,免战折成钱,这一杆就不亏。
挑飞还有一份不写在伤害里的红利:视野。狼怪飘到半空的那两秒,它身后挡着的伴怪、压着的草垛、蹲着的暗桩,全都露了出来——挑飞挑的不只是怪,是那身挡视线的皮。聪明的枪客在挑飞落地的半秒里已经把后半场的路线看完了,浮空窗口给了伤害,也给了一双俯瞰的眼睛,这第二份账,老玩家从不让它白飘。
写完再留一句给做浮空系的同学:挑飞最容易做成"一次位移",而它本该是一段没收对方回合的小剧场——起飞要快、空中要轻、落地要重,三段的心跳就是这门功夫的全部手艺。
补一个演示彩蛋位:挑飞落地的瞬间贴脸,落地尘土会扑到玩家身上糊一层灰——贴脸有贴脸的代价,尘土不伤人只糊脸,观众看着乐,玩家记住了距离。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法算法】 上一版埋了个越用越错的隐蔽报错:长按的计时不在抬手时清零——第一次长按松手后,秒表没归零,第二次轻轻一点直接被…
【语法算法】 接着抛坑:淡入没播完又来一个淡出,会怎样?答不好的界面都会出事——同一个面板的透明度被两个渐变同时抢,一个往上…
【语法算法】 上一版留了排"齐步走"的图标的隐蔽报错:一排波浪排布的图标同起同落——设计稿上是此起彼伏的波浪,实机上整排图标…
【语法算法】 先抛一个坑:按钮太小点不中,为什么不做大热区?界面上那个二十像素的小圆钮,玩家戳三次中一次——把按钮画大又会破…
【语法算法】 vel=vel math.pow(0.01,dt) ——先拆这一行。击退的全部手感都在这一行的衰减里:初速三百…
【语法算法】 上个月一场闪了全屏的事故成了组里的教材:受击闪白上线第一天,玩家一挨打整个界面白一遍——血条、按钮、聊天框全泡…