【游戏功能】
狮子搏兔的分量在"搏"字上:扑一只兔子也用十成力,扑完必然力竭。今天拆狮子搏兔的表现,看"全力一击换长硬直"这个代价公式怎么演出野兽的分量。
一、下蹲、扑出、压制、回气四段爆发
搏兔的爆发四段。下蹲段:人物下蹲蓄势,身后尘土被蹬起的碎屑扬起——下蹲越低扑得越狠,蹲是扑的前奏也是预告。扑出段:人物全力扑出,身后拖两道渐隐残影——残影是速度的证词,扑得越快残影越长。压制段:扑到狼怪身上把它压倒,冲击环滚出、尘土冲天、大字压制——压制之后狼怪硬直一点六秒,人物力竭头顶转起回气环。回气段:回气环走满一圈人物复活,环的剩余弧度就是"还要等多久"的答案。四段的代价公式直白:扑出有多威风,回气就有多漫长——全力一击的重量全靠回气环的时长来称。
完整演示在这,默认自动循环:
fx-lionpounce
二、幂尔框架实现:残影拖尾与回气弧环
扑击的残影用历史位置叠画,回气环按剩余时间画弧:
local LionPounce = {}
local KEY = { LUNGE_SPD = 620, RECOVER = 3 }
local st = { phase = "idle", t = 0, rec = KEY.RECOVER }
local function SetPhase(name)
st.phase = name
st.t = 0
end
function LP.Pounce(self_)
if st.phase ~= "idle" then return end
SetPhase("crouch")
SL:PlayActorAct(self_, "cast")
SL:Schedule(function(dt)
st.t = st.t + dt
if st.phase == "crouch" then
if math.random() < dt * 20 then
SL:PlayBurst(SL:GetValue("actorX", self_) - 20,
SL:GetValue("actorY", self_), "dust", 1)
end
if st.t > 0.4 then
SetPhase("lunge")
SL:SetActorVelocity(self_, KEY.LUNGE_SPD, 0)
end
elseif st.phase == "lunge" then
-- 残影: 记录历史位置叠画
SL:PlayGhostTrail(self_)
local target = SL:GetValue("curTarget")
local dx = SL:GetValue("actorX", target)
- SL:GetValue("actorX", self_)
if dx < 44 then
SL:SetActorVelocity(self_, 0, 0)
SL:UnSchedule("pounceRun")
LP.Pin(target)
end
elseif st.phase == "pinned" then
if st.t > 0.8 then
SetPhase("recover")
st.rec = KEY.RECOVER
SL:ShowSystemTips("力竭 — 回气 " .. st.rec .. "s")
end
elseif st.phase == "recover" then
st.rec = st.rec - dt
local k = 1 - st.rec / KEY.RECOVER
SL:DrawArc("recover_ring", SL:GetValue("actorX", self_),
SL:GetValue("actorY", self_) - 50, k * 6.28)
if st.rec <= 0 then
SL:UnSchedule("pounceRun")
SetPhase("idle")
SL:PlayActorAct(self_, "idle")
end
end
end, 0.016, "pounceRun")
end
function LP.Pin(target)
SL:PlayActorAct(target, "stuck")
SL:ScreenShake(0.34, 6)
SL:PlayFxAt("pin_shock", SL:GetValue("actorX", target),
SL:GetValue("actorY", target))
SL:DeductHp(target, 52)
SL:ShowHitNum(target, 52, "pounce")
SL:Stun(target, 1.6)
end
return LP
回气环的剩余弧度就是冷却的读数:环形的设计让玩家余光可读,不用盯条。
三、回气时长与扑空的分寸
回气时长滑块是代价的标尺:两秒的档位扑完还能连招,四秒的档位扑完就是活靶——时长每加半秒,扑击的决策分量就重一分。扑空的代价要设计:扑出去没撞到狼怪,人物照样力竭趴地——扑空的硬直比命中的更长,扑空是狮子搏兔最大的风险,风险可视化让玩家下一次出手更谨慎。压制期间狼怪的挣扎也要演:被压住的狼怪后腿偶尔蹬一下,蹬的幅度递减——蹬到最后不动了,压制的成果才算坐实。最后,力竭回气的文案用"力竭"不用"冷却"——冷却是术语,力竭是故事,这个词的差别就是代入感的差别。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 if _shadowT 0 then spd = noShadow and 12 or 24 end ——一行…
【游戏功能】 魂卫的全机制就一句:杀掉小怪化一盏魂火跟着你走,每盏魂火两秒自动劈最近的大怪一口八点,至多三盏——「引魂!」按…
【游戏功能】 一道咒飞过来,硬吃是四秒里一秒十的钝疼——有没有第三条路?纸人替灾给的就是第三条路:贴一个纸人在身后,八秒里头…
【游戏功能】 挨打还能赚钱?水镜式的答案是:挨的刀七成存进镜里不扣血、三成照常疼,六秒后点「还镜」,存量乘一点五放成水炮——…
【游戏功能】 if _mirrorT 0 then SL:TipAboveMe("免疫") return end ——一道写…
【游戏功能】 远近战的矛盾怎么解?远战的答案是把怪挡在射程外,近战的答案是把人拖进射程内——缩地阵给的第三个答案最蛮横:圈只…