【游戏功能】
狮子搏兔这句成语的完整版是"狮子搏兔,亦用全力"——扑一只兔子也要用上十成力。全力之后是什么?是力竭。今天拆狮子搏兔的表现,看"全力一击加大硬直"这个古老的代价设计怎么演出野兽的分量。
一、下蹲、扑出、压制三段爆发
搏兔的爆发三段。下蹲段:人物下蹲蓄势,身后尘土被蹬起的碎屑扬起——下蹲的蓄势越低,扑出的势能越大,蹲是扑的前奏也是预告。扑出段:人物全力扑出,身后拖两道渐隐残影——残影是速度的证词:扑得越快残影越长。压制段:扑到狼怪身上把它压倒在地,冲击环滚出、尘土冲天、大字压制——压制之后人物力竭,头顶转起回气环,回气环走完才能再动。三段的代价设计直白:扑出有多威风,回气就有多漫长——全力一击的重量全靠回气环的时长来称。
完整演示在这,默认自动循环:
fx-lionpounce
二、幂尔框架实现:残影拖尾与回气环
扑击的残影用历史位置叠画,回气环按时间比例绘制:
local LionPounce = {}
local KEY = { LUNGE_SPD = 620 }
local st = { phase = "idle", t = 0, rec = 3 }
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 == "recover" then
-- 回气环: 按剩余时间画弧
local k = 1 - st.t / (SL:GetValue("recoverTime") or 3)
SL:DrawArc("recover_ring", SL:GetValue("actorX", self_),
SL:GetValue("actorY", self_) - 50, k * 6.28)
if st.t >= (SL:GetValue("recoverTime") or 3) then
SL:UnSchedule("pounceRun")
SetPhase("idle")
end
end
end, 0.016, "pounceRun")
end
function LP.Pin(target)
SetPhase("pinned")
SL:PlayActorAct(self_, "idle")
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:KnockBack(target, 60)
st.rec = SL:GetValue("recoverTime") or 3
end
return LP
GhostTrail 的残影用透明度递减的历史帧叠画——两道残影够了,三道就成残像分身。
三、回气环的读法与扑空的代价
回气环的读法是给玩家的进度条:环走满一圈人物复活——环的剩余弧度就是"还要等多久"的答案,环形的设计让玩家余光可读。扑空的代价要设计:扑出去没撞到狼怪,人物照样力竭倒地——扑空的硬直比命中的更长,扑空是狮子搏兔最大的风险,风险可视化(扑空后人物趴地半秒)让玩家下一次出手更谨慎。压制期间狼怪的挣扎也要演:被压住的狼怪两条后腿偶尔蹬一下——挣扎的幅度递减,蹬到最后不动了,压制的成果才算坐实。力竭回气的文案用"力竭"不用"冷却"——冷却是对玩家说的术语,力竭是对观众说的故事,这个词的差别就是代入感的差别。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 指南车是古代的导航黑科技:车怎么转,车上小人的手永远指着南边——齿轮抵消了车身的每一度转向。今天拆指南车的表现…
【游戏功能】 化骨绵掌的狠不在掌落而在掌后:一掌拍上去毫发无伤,三息之后内伤发作——伤是延迟到账的。今天拆化骨绵掌的表现,看…
【游戏功能】 迷魂雾的凶险是"看不清":狼怪就在雾里,轮廓时隐时现——出手全凭半秒前的记忆。今天拆迷魂雾的表现,看"能见度"…
【游戏功能】 吹画是国画里的即兴流派:一滴墨落在宣纸上,嘴巴一吹墨就分出枝杈——枝杈的走向全靠气息的角度,吹完的墨枝谁也没法…
【游戏功能】 拆一行代码: 下珠满五提一颗上珠——算盘的进位规则浓缩成这一行。今天讲算盘的表现,看"进位"这个抽象概念怎么被…
【游戏功能】 走马灯是靠"转"讲故事的:灯轮一转,纸屏绕行,幕后烛光把影人投在屏上——幕幕轮换,戏就一折接一折。今天拆走马灯…