【游戏功能】
裂地爪的裂缝判定就这一行:
crack = { from = P.x + 60, to = M.x + 20 }
裂缝从玩家脚前六十像素裂到狼怪脚下偏后二十像素——裂地爪的全部几何就这一行。裂缝里的狼持续掉血,缝合后恢复正常。今天拆开。
一、裂地、困缝、缝合三段
裂地爪的三段。裂地:玩家隔空一爪从脚下劈到狼怪脚下——一条金色的裂缝从玩家这边裂到那边,裂缝的形状是折线不是直线——折线是"大地天然裂开"的视觉,直线是"技能特效"的视觉,前者更真实。困缝:裂缝里的狼怪持续掉血——每秒六点不高但稳定,脚下的地面在塌,狼怪的爪在乱抓,抓不住任何可以攀住的东西。缝合:裂缝开三秒后自动合拢——合拢的一瞬狼怪从缝里跳出来——缝合后一切恢复,玩家的下一个裂地爪冷却也转好了。三段连起来:裂地爪玩的是"把地面变成武器"——地面不站人,站进去就掉血。
完整演示在这——点「裂地爪!」看裂缝怎么从脚下裂到狼脚下:
fx-crevice
二、幂尔框架实现:裂缝区域与持续结算
幂尔框架里裂缝是一个带寿命的线状区域:
local Crevice = {}
local LIFE, DPS = 3, 6
function Crevice.Cast(fromX, toX)
SL:CrackGround(fromX, toX)
SL:ShakeCamera(6, 0.35)
SL:FlashScreen("#c9a86a", 0.1)
SL:RegZoneTick(fromX, toX, 0.5, function(units)
for _, u in ipairs(units) do
SL:Damage(u, DPS * 0.5)
SL:PopNumber(u, DPS * 0.5, "gold")
end
end)
SL:RegOnce("crack_close", LIFE, function()
SL:HealGround(fromX, toX)
end)
end
SL:RegClick("crevice", function()
Crevice.Cast(SL:GetValue("x", "player") + 60, SL:GetValue("x", "monster") + 20)
end)
return Crevice
裂缝的折线视觉写在 SL:CrackGround 的渲染里——折线不是直线,有几个随机的偏折点,每次裂的形状都不一样——天然的裂缝不可能两次一模一样。
三、持续掉血的定价与缝合的节奏
每秒六点的持续掉血是裂缝的定价:太低狼怪站在缝里无所谓,太高变成站上去就死——六点刚好让狼怪"想出去但出不去"。三秒的寿命是裂缝的时效:太短狼怪等一等就出来了,太长变成永久陷阱——三秒刚好够玩家绕到旁边砍两刀再回来。和震地的分账写清楚:震地是一圈冲击波荡开一次,裂地是一条裂缝持续三秒——一个结算一次,一个结算多段——裂缝的价值在于"让狼怪站在坏地方",震地的价值在于"让狼怪挨一下"——两类地面技能一个管持续一个管爆发。最后给表现组:裂缝的折线要跟着呼吸明暗——亮一暗一亮一暗的脉动让裂缝看起来"还在活动",静态的裂缝线就像画在地图上的装饰。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…