【游戏功能】
兽王冲锋的状态机就这一行:
SL:SetState(monster, "charge", 0.25)
蓄力半秒后直线冲撞——兽王冲锋的全部机制就这一行。红虚线亮时侧移就躲得开。
一、蓄力、冲锋、撞空三段
蓄力:狼怪压低身子蓄力半秒——红虚线从狼怪拉到玩家方向。冲锋:沿虚线直线冲过来——速度快不拐弯。撞空:玩家侧移了狼怪冲过头——硬直零点八秒白送。
完整演示在这——红虚线亮时侧移,看它一头撞空:
fx-charger
二、幂尔框架实现
local Charge = {}
function Charge.Start(monster)
SL:SetState(monster, "windup", 0.55)
SL:DrawDashLine(monster, "red")
end
local function onTick(monster, dt)
local st = SL:GetState(monster)
if st == "charge" then
SL:MoveToward(monster, "player", 400 * dt)
if SL:IsNear(monster, "player", 30) then
SL:DamagePlayer(16)
SL:FlashScreen("#ff7b72", 0.1)
end
elseif st == "charge_done" then
SL:SetStagger(monster, 0.8)
SL:SetState(monster, "idle")
end
end
SL:On("windup_end", function(m) SL:SetState(m, "charge", 0.25) end)
SL:On("charge_end", function(m) SL:SetStagger(m, 0.8) end)
SL:RegTick("charge_tick", onTick)
return Charge
三、虚线的公平与硬直的馈赠
虚线前摇半秒是公平底线。撞空硬直零点八秒是奖励帧——冲锋落空狼怪自己收不住力。冲锋距离一百五十对闪避距离八十:闪避距离小于冲锋距离,侧移后狼怪冲过头——冲锋落点和闪避落点之间的距离就是反打的距离。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…