【游戏功能】
"破军斩的裂缝到底有多深?"——策划给的答案是把地面裂了半尺深,狼怪站在裂缝上直接陷进去。今天拆破军斩的表现,看"裂地"这个效果怎么做出一刀裂半尺的视觉冲击。
一、跃起、下劈、裂地三段暴力
破军斩的暴力三段。跃起段:人物跃起举刀,在空中划出抛物线——跃起的高度决定下劈的势能,越高劈得越深。下劈段:刀光从空中直劈地面,白光划过落点——下劈的速度要快:跃起慢、下劈快,节奏反差就是暴力的语言。裂地段:刀触地的瞬间地面裂开半尺深的裂缝——裂缝的裂纹向两侧不规则延伸,碎石从裂缝边缘崩飞。三段的核心是"从空中到地面"的势能转换:跃起越高、下劈越狠、裂缝越深——势能的转换就是伤害的具象。
完整演示在这,默认自动循环:
fx-groundcrack
二、幂尔框架实现:跃起物理与裂缝渲染
跃起走抛物线物理,裂缝用锯齿线条渲染:
local GroundCrack = {}
local KEY = { JUMP_V = 420, GRAVITY = 900 }
local st = { vy = 0, y = 0, jumping = false }
local crackDepth = 0
function GC.Cast(self_, target)
st.jumping = true
st.vy = -KEY.JUMP_V
SL:PlayActorAct(self_, "cast")
SL:ShowSystemTips("跃起举刀!")
end
function GC.Tick(dt)
if st.jumping then
st.vy = st.vy + KEY.GRAVITY * dt
st.y = st.y + st.vy * dt
if st.y >= 0 and st.vy > 0 then
st.y = 0
st.jumping = false
GC.Slam(target)
end
SL:SetActorY("player", SL:GetValue("groundY") + st.y)
end
end
function GC.Slam(target)
SL:PlayActorAct(self_, "attack")
SL:ScreenShake(0.38, 7)
SL:PlayFxAt("ground_crack", SL:GetValue("actorX", target))
SL:PlayBurst(SL:GetValue("actorX", target),
SL:GetValue("groundY"), "rock_bits", 20)
-- 裂缝渲染: 锯齿线条 + 底部橙色发光
SL:DrawCrackLine(
SL:GetValue("actorX", target) - 50,
SL:GetValue("groundY") + 4,
SL:GetValue("actorX", target) + 50,
SL:GetValue("groundY") + 4
)
crackDepth = SL:GetValue("crackPower") or 50
SL:DeductHp(target, 56)
SL:ShowHitNum(target, 56, "groundcrack")
SL:Stun(target, 1.4)
SL:ShowSystemTips("裂地半尺! — 狼怪陷入裂缝")
end
return GC
裂缝的锯齿线加底部橙光——锯齿是不规则的裂,橙光是裂缝底部的余温。
三、裂缝深度与陷入的视觉
裂缝的深度用狼怪的"下沉"来表达:裂开后狼怪脚下地面塌陷半尺——狼怪整体往下沉六像素,沉下去的六像素就是"半尺深"的具象。碎石从裂缝边缘向两侧崩飞——崩飞的碎木用棕色长方片,碎石用灰色方片——两种粒子混合飞出才有层次。最后,裂缝的裂纹要在三秒后慢慢淡出——裂痕是破军斩的余韵,慢慢淡出的裂痕让玩家在下一次跃起前还能看到上一次的威力。裂痕消失的速度就是技能冷却的视觉暗示。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 if _shadowT 0 then spd = noShadow and 12 or 24 end ——一行…
【游戏功能】 魂卫的全机制就一句:杀掉小怪化一盏魂火跟着你走,每盏魂火两秒自动劈最近的大怪一口八点,至多三盏——「引魂!」按…
【游戏功能】 一道咒飞过来,硬吃是四秒里一秒十的钝疼——有没有第三条路?纸人替灾给的就是第三条路:贴一个纸人在身后,八秒里头…
【游戏功能】 挨打还能赚钱?水镜式的答案是:挨的刀七成存进镜里不扣血、三成照常疼,六秒后点「还镜」,存量乘一点五放成水炮——…
【游戏功能】 if _mirrorT 0 then SL:TipAboveMe("免疫") return end ——一道写…
【游戏功能】 远近战的矛盾怎么解?远战的答案是把怪挡在射程外,近战的答案是把人拖进射程内——缩地阵给的第三个答案最蛮横:圈只…