【游戏功能】
幽灵突刺的穿透判定就这一行:
SL:SetState("player", "phase", 0.4)
人变成半透明状态穿过狼怪身体——幽灵突刺的全部机制就这一行。穿过的瞬间造成伤害,落点在它身后。今天拆开。
一、虚化、穿身、落定三段
幽灵突刺的三段。虚化:玩家变半透明——alpha 值从一降到零点三,人物的轮廓还在但颜色褪成了淡蓝——虚化是"我可以穿过去"的视觉宣言。穿身:虚化的玩家从左往右穿过狼怪的身体——穿过的一瞬造成二十二点伤害——人从狼怪的模型里穿过去,不是绕过去也不是跳过去,是真的穿过去。落定:穿到狼怪身后落地——透明度回满、伤害结算完毕、狼怪被穿过的瞬间愣了半拍——落定后玩家站在狼怪的身后,背击的位置已经摆好。三段连起来:幽灵突刺玩的是"我可以穿过你"——不是闪避不是位移,是把自己的身体变成幻影直接从目标体内通过。
完整演示在这——点「幽灵突刺!」看半透明的自己怎么穿过狼怪:
fx-phantomstrike
二、幂尔框架实现:相位切换与穿身结算
幂尔框架里幽灵突刺是一个带相位切换的穿身状态:
local PhantomStrike = {}
local PHASE_TIME, PHASE_DMG = 0.4, 22
local phase = 0
function PhantomStrike.Dash(target)
phase = PHASE_TIME
local fromX = SL:GetValue("x", "player")
local toX = SL:GetValue("x", target) + 60
SL:SetAlpha("player", 0.3) -- 虚化: 半透明
SL:SetNoClip("player", true) -- 穿身: 关闭碰撞
SL:RegTween(PHASE_TIME, function(k)
SL:SetX("player", fromX + (toX - fromX) * k)
if not phase and math.abs(SL:GetValue("x", "player") - SL:GetValue("x", target)) < 30 then
phase = true
SL:Damage(target, PHASE_DMG)
SL:PopNumber(target, PHASE_DMG, "blue")
SL:Stagger(target, 0.5)
SL:ShowTipAbove(target, "穿身!")
end
end, function()
SL:SetAlpha("player", 1)
SL:SetNoClip("player", false)
phase = 0
SL:ShowTipAbove("player", "落定")
end)
end
SL:RegClick("phantom", function() PhantomStrike.Dash("monster") end)
return PhantomStrike
SetNoClip(true) 是穿身的核心开关——关闭碰撞后玩家的位移不再被狼怪的体积阻挡——穿身完成后重新打开碰撞,两个状态之间不能有碰撞缝隙。
三、穿透的伤害与落点的选择
二十二点的穿身伤害是幽灵突刺的输出账:伤害不算高,但它的价值在于"穿过之后站的位置"——穿过狼怪落在它身后,背击的位置就位,后续的输出从背击开始——突刺本身不赚,赚的是突刺后的站位。穿透的判定要单独说:半透明状态下免疫一切碰撞——狼怪的爪子从身体里穿过去,玩家的刀从狼怪的身体里穿出来——双向无碰撞是虚化状态的物理规则,这条规则让幽灵突刺变成了真正的"幽灵"。零点四秒的穿身时间是手感的核心:太慢像走路,太快看不清穿的过程——零点四秒刚好让玩家看清"人从狼怪身体里穿了出来"的全过程。最后给表现组:穿身的一瞬要在狼怪的模型上留一个半透明的人形残影——残影是"有人从这里穿过去了"的证据——残影消失的速度和玩家虚化恢复的速度同步,两边的透明度一升一降,穿身的画面才有呼应。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏功能】 控制技能的镜像问题是:锁住了怪,自己是不是也闲着?影锁把这道两难摆上台面:影锁四秒,它动不了、你也动不了——它…
【游戏功能】 打断为什么只有"清读条"一种?震魂偏要反过来——不清招、不断势,打在它读条半途的那一劲顺着招震进腑——中劲十秒…
【游戏功能】 蜂群为什么总是一只一只出?蜂王偏要让它们进化:放一只蜂王出来,杀掉小怪喂它——喂三只升一阶,三阶蜂王的毒刺一秒…
【游戏功能】 技能为什么总是不扣自己的血?血刃偏要反着来:开着血刃的每一刀先扣自己二血、命中回三血——净赚一但要打得中,空刀…
【游戏功能】 bn.t = bn.t - dt ——一行旗面倒计时的代码,撑起了破军旗全部的紧迫感:旗立三秒、圈内加攻三成,…
【游戏功能】 淬毒为什么要一毒到底?淬毒刃偏要一层一层叠:一刀淬一层毒、毒层一秒六地烂,六层封顶之后一刀下去毒伤三十六——叠…