【游戏功能】
断崖掌的判定就这一行:
if cliffX - x < 60 then fall() end
推退落点离崖沿六十像素以内,这一掌就是坠崖——掌力不变,变的是崖的位置。断崖掌这套"位置即伤害"的玩法,把击退从减速带变成了断头台,今天拆开。
一、引狼、推掌、坠崖三段
断崖掌的三段。引狼:狼怪在断崖边踱步,玩家故意贴近又拉开,把它一步一步引到崖沿附近——引狼的功夫在走位:贴太近它咬你,离太远它不理你,那个"刚好它愿意跟着走"的距离就是引狼的引线。推掌:狼到了崖边六十像素之内,一掌推出——青白色的掌风推在它胸口,它蹬蹬蹬退向崖沿——推得动推不动,掌力说了不算,崖的位置说了算。坠崖:退过崖沿的那一瞬,人形一空——坠崖的红字砸下来,狼怪连叫声都来不及出完就落了下去,崖下不用补刀,系统直接判它出局。三段连起来:断崖掌玩的是"推的位置比推的力重要"——把狼引到深渊边上,一掌就值一刀处决。
完整演示在这——点「断崖掌!」把它往崖沿送,够近就一掌送下去:
fx-cliff
二、幂尔框架实现:崖沿查询与坠崖结算
幂尔框架里推退的落点要过一遍崖沿查询,过线即坠:
local CliffPalm = {}
local FALL_LINE = 60
function CliffPalm.Push()
SL:PlayActorAct("player", "attack")
SL:PlayWaveArc("player_hand", "palm_blue", 1)
SL:RegOnce("palm_hit", 0.2, function()
local m = SL:GetNearMonster()
local landX = SL:GetValue("x", m) + 150
local cliffX = SL:GetCliffX(landX)
if cliffX and cliffX - landX < FALL_LINE then
SL:Fall(m) -- 坠崖: 直接判出局
SL:ShowTipAbove(m, "坠崖!")
SL:PlayBurst(m, "fall_dust", 10)
else
SL:Knockback(m, 150)
SL:Damage(m, 12)
SL:PopText(m, "推退", "blue")
end
end)
end
SL:RegClick("cliff_palm", CliffPalm.Push)
return CliffPalm
推退和坠崖写在同一个回调的分支里:推的力是恒定的一百五十像素,差的那六十像素是崖给的——伤害的账和位移的账分开记,崖的账才立得住。
三、六十像素的悬崖与引狼的引线
六十像素的坠崖线是这套玩法的刻度:线内一掌出局,线外一掌只值十二点的推退——推与坠的落差要大,玩家才有动力去磨那六十像素。引狼的引线同样有讲究:贴脸引,狼咬人;远引,狼掉头——引狼的甜点区在"它追得上但够不着"的那段距离,玩家的走位始终吊着它的胃口往崖边挪。坠崖的惩罚要做到干脆:坠下去不补刀、不动画拖沓、直接出局——断崖掌的爽全在"崖下不用补刀"这六个字,爽快要给足。和推退出场的分账写清楚:普通的推退是位移控制,推完还能追;坠崖是即死结算,推完直接少一头——同一掌两种结果,差的就是那六十像素的地形。最后一条给地图组:断崖要画得明明白白——崖沿一圈白边、崖下深蓝渐变、崖上写"断崖"两个字——玩家读得出危险,才会把引狼的走位当成玩法来玩;崖要是画得像草地,断崖掌就成了推人下楼的恐怖故事。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…